Insertar actualizar registros en PHP MySQL
Insertar actualizar registros en PHP MySQL. En una tabla MySQL se puede hacer dos consultas en uno, es decir Insertar y si existe actualizar el registro en una sola consulta SQL.
Insertar actualizar registros en PHP MySQL
Este método nos ayuda a optimizar la consulta como ser:
- Buscar registro SELECT * FROM TABLA;
- Insertar Registro en MySQL
- Actualizar registro SQL
Existe el Insert Update en MySQL
En MySQL existe unas clausulas para poder realizar tal consulta SQL. Es decir, primero verifica la tabla de la siguiente forma:
- Si no existe el registro en la tabla hace la operación de insertar registro.
- SI existe el registro solo se limita a actualizar el registro a través de un INDICE.
Si especifica una cláusula ON DUPLICATE KEY UPDATE y la inserción de una fila provocaría un valor duplicado en un índice ÚNICO o CLAVE PRINCIPAL, se produce una ACTUALIZACIÓN de la fila anterior. Por ejemplo, si la columna a se declara como ÚNICA y contiene el valor 1, las siguientes dos declaraciones tienen un efecto similar:
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE t1 SET c=c+1 WHERE a=1;
INSERTAR o ACTUALIZAR DE CLAVE DUPLICADA
que es la de la sentencia REPLACE
, la cual su sintaxis es igual que la de insert, la cual en tablas con Auto Increment
continúa la numeración.
on duplicate key
aplicaría un auténtico update, mientras que REPLACE
te haría un DELETE
y un INSERT
en duplicados. (Lo cual te puede dar un problema si tienes el id en otras tablas como llaves foráneas).
Ambas opciones tienen sus ventajas y desventajas.
Ejemplo de uso
INSERT ... ON DUPLICATE KEY UPDATE
Un ejemplo de consulta SQL seria utilizando lo siguiente:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
¿Cuál sería la solución?
La solución más directa seria utilizar la cláusula ON DUPLICATE KEY UPDATE, siempre que la tabla a la cual estas intentando ingresar una fila posea Clave Primaria.
Por ejemplo, vamos a suponer que tenemos la tabla Clientes con los campos: Num, Nombre, Telefono. (Num es Clave Primaria)
INSERT INTO Clientes(Num, Nombre, Telefono) VALUES(1,'Agustin','123456')
ON DUPLICATE KEY UPDATE Telefono = VALUES(Telefono);
Explicación de la consulta anterior
La cláusula DUPLICATE KEY UPDATE seguida del Campo = y aquí puedes colocar VALUES(Teléfono) para no tener que repetir nuevamente el valor ‘123456’.
Conclusión
En este articulo hemos aprendido a buscar y actualizar registros dentro de una tabla MySQL, todo ello en una consulta SQL de manera dinámica.
Recuerda que se puede implementar estas consultas con un formulario HTML y lenguaje PHP usando métodos como ser: Método POST o Método GET.
Además, es posible integrar a PHP PDO sin inconvenientes.