La primera regla es
Use prepared queries if you do not want to take the unpleasant surprise of having a SQL injection .
I. Example of UPDATE
with PDO
Watch a demo working
We assume that in $pdo
you have a valid connection to the database.
function actualizarMateriales ($materiales,$descripcion,$cantidad,$precio,$total)
{
$sql = "UPDATE materiales SET
materiales=:materiales,
descripcion=:descripcion,
cantidad=:cantidad,
precio=:precio,
total=:total
WHERE id=:id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":materiales",$materiales);
$stmt->bindValue(":descripcion",$descripcion);
$stmt->bindValue(":cantidad",$cantidad);
$stmt->bindValue(":precio",$precio);
$stmt->bindValue(":total",$total);
$stmt->bindValue(":id",$id);
if ($stmt ->execute())
{
// echo "Se actualizaron ".$stmt->rowCount()." registros";
return $stmt->rowCount();
}
else
{
//echo "Los registros no se actualizaron";
return null;
}
$pdo = null;
}
II. Ejemplo de
UPDATE con MySQLi
Watch a demo working
We will assume that in the variable $mysqli
you have a valid connection to your database:
function actualizarMateriales ($materiales,$descripcion,$cantidad,$precio,$total)
{
/*
* Las consultas preparadas sustituyen los valores reales
* por signos de interrogación en MySQLi
*/
$sql = "UPDATE materiales SET
materiales=?,
descripcion=?,
cantidad=?,
precio=?,
total=?
WHERE id=?";
/*
* Preparar la consulta
*/
$stmt=$mysqli->prepare($sql);
/* Evaluar si la preparación tuvo éxito */
if ($stmt)
{
/*
* Pasar parámetros separados de la instrucción SQL
* la letras "ss" indican el tipo de cada dato que se va a insertar
* s: String, si es una cadena , i: Integer, si fuera un entero, etc
* Ejecutar
*/
$stmt->bind_param("ssiiiii", $materiales,$descripcion,$cantidad,$precio,$total);
if ($stmt->execute())
{
/*
* Imprimir la cantidad de filas insertadas usando affected_rows
* O devolver ese valor
*/
//printf("%d Fila(s) actualizada(s).\n", $stmt->affected_rows);
return $stmt->affected_rows;
}
else
{
//echo "No se pudo actualizar";
return null;
}
/*
* Cerrar $stmt y luego la conexión
* para liberar recursos
*/
$stmt->close();
}
else
{
echo "Hubo un error preparando la consulta";
}
$mysqli->close();
}
III. Example of use of any of the two
$actualizados=actualizarMateriales ($materiales,$descripcion,$cantidad,$precio,$total);
if ($actualizados)
{
echo "Se actualizaron: ".$actualizados." registros";
}
else
{
echo "No se actualizó ningún registro";
}
Note
All the update code can be part of a class dedicated to managing the connection to the database, queries, which could be responsible for determining the type of query it is and returning appropriate messages such as numbers of records inserted (in the case of queries INSERT...
, updated (for queries UPDATE ...
, or arrangements with the data in the case of queries of type SELECT...
.