我正在尝试这个sql查询,但它无法工作:
<form name="modificarUsuario" action="" method="POST">
<h2>Modificación de Datos Personales</h2>
Username: <input type="text" name="username" />
Nombre Completo: <input type="text" name="nombre" />
Email: <input type="text" name="email" />
Clave: <input type="text" name="pass" />
<input type="submit" class="button" name="modificarDatos" value="Modificar datos">
<br>
</form>
$usuario = $_POST['username'];
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$clave = $_POST['pass'];
$uid = 1;
$consulta = mysqli_prepare($conectar,
"UPDATE usuario
SET username = ?, pass = ?, name = ?, email = ?)
WHERE uid = '".$uid."'
");
if ($consulta) {
mysqli_stmt_bind_param( $consulta, 'ssss', $usuario, $clave, $nombre, $email);
mysqli_stmt_execute($consulta);
echo 'Se guardaron los cambios';
}
else {echo 'Hubo un error! El cambio no se guardó!';}
mysqli_stmt_close($consulta); //here's line 52错误是:
PHP : mysqli_stmt_close()期望参数1为mysqli_stmt,布尔值为.
数据库有一个"usuario“表,其中有一个"uid”字段,该字段是一个整数。所有字段拼写正确,顺序正确: uid、用户名、传递、名称、电子邮件
发布于 2015-01-12 22:47:29
您的SQL文本(包含UPDATE语句的字符串)中有一个虚假的关闭paren字符。这是违反MySQL语法的行为。
, email = ?)
^如果mysqli_prepare失败(即返回FALSE),您应该使用mysqli_error($connectar)检索错误消息,这将使您看到语法错误。
else {
echo 'Hubo un error! El cambio no se guardó!';
echo mysqli_error($conectar);
}只有在存在有效的语句句柄时,mysqli_stmt_close才能工作,因此调用应该移到“然后”块中,因此只有在准备返回语句句柄时才会执行。
发布于 2015-01-12 22:38:25
来自手册
如果发生错误,mysqli_prepare()返回语句对象或FALSE。
当准备语句失败时,它将返回一个布尔值,这意味着$consulta将不是一个语句,而是一个布尔值。布尔人不能被关闭,mysqli_stmt_close想要一份声明。因此,如果将失败的准备语句传递给mysqli_stmt_close,则会得到发布的错误。
所以,只有当它成功的时候,才能接近你。
if ($consulta) {
mysqli_stmt_bind_param( $consulta, 'ssss', $usuario, $clave, $nombre, $email);
mysqli_stmt_execute($consulta);
echo 'Se guardaron los cambios';
mysqli_stmt_close($consulta);
}
else {echo 'Hubo un error! El cambio no se guardó!';}https://stackoverflow.com/questions/27911904
复制相似问题