首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL:为什么这个更新查询不能工作?

MYSQL:为什么这个更新查询不能工作?
EN

Stack Overflow用户
提问于 2015-01-12 22:34:13
回答 2查看 129关注 0票数 0

我正在尝试这个sql查询,但它无法工作:

代码语言:javascript
复制
<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、用户名、传递、名称、电子邮件

我读过这个职位另一个职位,他们都有可能出错的有趣信息。但我查过了一切都还好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-12 22:47:29

您的SQL文本(包含UPDATE语句的字符串)中有一个虚假的关闭paren字符。这是违反MySQL语法的行为。

代码语言:javascript
复制
, email = ?) 
           ^

如果mysqli_prepare失败(即返回FALSE),您应该使用mysqli_error($connectar)检索错误消息,这将使您看到语法错误。

代码语言:javascript
复制
 else {
    echo 'Hubo un error! El cambio no se guardó!';
    echo mysqli_error($conectar);
 }

只有在存在有效的语句句柄时,mysqli_stmt_close才能工作,因此调用应该移到“然后”块中,因此只有在准备返回语句句柄时才会执行。

票数 4
EN

Stack Overflow用户

发布于 2015-01-12 22:38:25

来自手册

如果发生错误,mysqli_prepare()返回语句对象或FALSE。

当准备语句失败时,它将返回一个布尔值,这意味着$consulta将不是一个语句,而是一个布尔值。布尔人不能被关闭,mysqli_stmt_close想要一份声明。因此,如果将失败的准备语句传递给mysqli_stmt_close,则会得到发布的错误。

所以,只有当它成功的时候,才能接近你。

代码语言:javascript
复制
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ó!';}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27911904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档