Actualizar registros PDO PHP: Ejemplo Completo
Actualizar registros PDO PHP. Para lograr una actualización de un registro o múltiples registros, tenemos que tener una variable de conexión PDO declarada. además, PDO necesita esa variable para ejecutar consultas SQL e informar los posibles errores en caso de una falla.
Actualizar registros PDO PHP: Pasos
- Crear una consulta UPDATE correcta
- Cambiar todos los valores reales enviadas por el formulario con marcadores de posición
- Preparar la consulta creada
- Ejecución de la instrucción, enviando todos los valores reales a execute()
Consulta UPDATE usando marcadores de posición posicionales
Los marcadores de posición posicionales son más concisos y fáciles de usar.
¿Cómo actualizar un solo registro?
Si desea actualizar un solo registro tiene que usar el comando UPDATE y además usar la cláusula WHERE para identificar qué registro actualizar mediante su ID identificador.
PROCESO: Actualizar registros PDO PHP
1) Declarar la consulta SQL regular
Escriba la instrucción de actualización FRECUENTE y en lugar de valores, asigne los marcadores de posición con nombre. Por ejemplo:
$consulta = "UPDATE tbl_personal SET `nombres`= :nombres, `apellidos` = :apellidos, `profesion` = :profesion, `estado` = :estado, `fregis` = :fregis WHERE `id` = :id";
2) Preparar la consulta:
En esta parte tenemos que preparar una sentencia para su ejecución y además devuelva un objeto sentencia.
$sql = $connect->prepare($consulta);
3) Enlazar los parámetros:
Debemos ejecutar una sentencia preparada con parámetros de cambio de nombre y devuelve TRUE en caso de éxito o FALSE en caso de algún error. En este caso usaremos bindParam para poder asignar si es cadena de texto, entero, etc.
$sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25); $sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25); $sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25); $sql->bindParam(':estado',$estado,PDO::PARAM_STR,25); $sql->bindParam(':fregis',$fregis,PDO::PARAM_STR); $sql->bindParam(':id',$id,PDO::PARAM_INT);
4) Definir los valores enlazados
Asignamos variables para recoger la información enviada por el formulario o información estática si amerita el caso. Sin embargo, esta información será procesada con el bindParam.
////// Informacion enviada por el formulario ///// $id=trim($_POST['id']); $nombres=trim($_POST['nombres']); $apellidos=trim($_POST['apellidos']); $profesion=trim($_POST['profesion']); $estado=trim($_POST['estado']); $fregis = date('Y-m-d'); ////// Fin informacion enviada por el formulario ///
5) Ejecute la consulta:
El siguiente proceso ejecuta una sentencia preparada y si todo esta correcto será enviada a la base de datos.
$sql->execute();
6) Compruebe que la consulta se ha realizado y que la base de datos se ha actualizado correctamente.
Por último, nos apoyaremos en rowCount(), recordemos que esta instrucción devuelve el número de filas afectadas por la última sentencia SQL ejecutada. Por lo tanto, en este ejemplo comprobaremos si la consulta realizo alguna modificación en el registro de nuestra base de datos.
if($sql->rowCount() > 0) { $count = $sql -> rowCount(); echo "<div class='content alert alert-primary' > Gracias: $count registro ha sido actualizado </div>"; } else{ echo "<div class='content alert alert-danger'> No se pudo actulizar el registro </div>"; print_r($sql->errorInfo()); }
7) Mostramos el código completo:
Ahora, mostraremos el código completo para analizarlo de inicio a fin la instrucción de actualización incluida la condicional de envío del método POST.
<?php if(isset($_POST['actualizar'])){ ////// Informacion enviada por el formulario ///// $id=trim($_POST['id']); $nombres=trim($_POST['nombres']); $apellidos=trim($_POST['apellidos']); $profesion=trim($_POST['profesion']); $estado=trim($_POST['estado']); $fregis = date('Y-m-d'); ////// Fin informacion enviada por el formulario /// ////////////// Actualizar la tabla ///////// $consulta = "UPDATE tbl_personal SET `nombres`= :nombres, `apellidos` = :apellidos, `profesion` = :profesion, `estado` = :estado, `fregis` = :fregis WHERE `id` = :id"; $sql = $connect->prepare($consulta); $sql->bindParam(':nombres',$nombres,PDO::PARAM_STR, 25); $sql->bindParam(':apellidos',$apellidos,PDO::PARAM_STR, 25); $sql->bindParam(':profesion',$profesion,PDO::PARAM_STR,25); $sql->bindParam(':estado',$estado,PDO::PARAM_STR,25); $sql->bindParam(':fregis',$fregis,PDO::PARAM_STR); $sql->bindParam(':id',$id,PDO::PARAM_INT); $sql->execute(); if($sql->rowCount() > 0) { $count = $sql -> rowCount(); echo "<div class='content alert alert-primary' > Gracias: $count registro ha sido actualizado </div>"; } else{ echo "<div class='content alert alert-danger'> No se pudo actulizar el registro </div>"; print_r($sql->errorInfo()); } }// Cierra envio ?>
CONCLUSIÓN: Actualizar registros PDO PHP
Tenemos que tener presente que el uso con la conexión PDO es más robusta y muy recomendable para establecer una conexión con MySQL.
Otra ventaja seria los caracteres especiales de una consulta, si no escapamos con bind_param puede ser un terrible agujero de seguridad en nuestras consultas.
Para estos casos podemos utilizar consultas preparadas, las cuales escaparan estos caracteres especiales.
DESCARGAR EL EJEMPLO
A continuación, les dejare el ejemplo completo e incluido la base de datos para que puedan interactuar con la actualización.
Update Rows usando PDO PHP MySQL
Gracias amigo, me ayudo estaba atorado en la respuesta despues de ejecutar la consulta
GB