sentencia - Declaración de actualización preparada en MySQLi en PHP
select sentencia preparada (3)
Está vinculando los parámetros antes de asignarlos a las variables:
$title=$_POST[''title''];
$desc=$_POST[''description''];
$uid2=$_GET[''uid''];
$stmt->bind_param(''sss'', $title, $desc, $uid2);
edit : rayar eso, no parece marcar la diferencia si los parámetros están vinculados antes o después de haber definido las variables (¡aprendes algo nuevo todos los días!), pero como dijo Michael, lógicamente tiene sentido definirlos primero.
¿Cómo se escribe una declaración de actualización preparada? Referencia: mysqli :: prepare
Intenté escribirlo como se describe:
if ($stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title =? description = ? WHERE uid = ?")){
$stmt->bind_param(''sss'', $title, $desc, $uid2);
//Get params
$title=$_POST[''title''];
$desc=$_POST[''description''];
$uid2=$_GET[''uid''];
$stmt->execute();
$stmt->close();
}
else {
//Error
printf("Prep statment failed: %s/n", $mysqli->error);
}
Error:
La sentencia de preparación falló: tiene un error en su sintaxis SQL; verifique el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de ''description =? ¿DÓNDE uid =? '' en la línea 1 Fila editada.
Probablemente necesites agregar comas:
$stmt = $mysqli->prepare("UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?"
Solo te falta una coma entre las columnas establecidas:
UPDATE tblFacilityHrs SET title = ?, description = ? WHERE uid = ?
^^^^^^
Cuando MySQL informa de un error como " verificar" en el manual de la sintaxis para usar cerca de "algo" , busque con más frecuencia el carácter que precede inmediatamente al "algo" , ya que es donde se produce el error.
Nota: es posible que deba llamar a bind_param()
después de configurar las variables de entrada en lugar de antes. No recuerdo cómo MySQLi los analiza y cuándo están vinculados, pero lógicamente tiene más sentido en el código establecerlos primero y luego enlazar de todos modos.
//Get params
$title=$_POST[''title''];
$desc=$_POST[''description''];
$uid2=$_GET[''uid''];
$stmt->bind_param(''sss'', $title, $desc, $uid2);