SQL Query在没有WHERE的情况下工作,但是一旦我添加了WHERE语句,它就无法正常运行[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在编写的SQL查询在下面编写时执行正常,但它会更新所有行。

mysqli_query($connection, 'UPDATE users SET hashed_pass = ' . mysql_escape($newpassword).'');

但是,只要我尝试通过添加WHERE语句向其添加一些逻辑,我就不会收到任何错误,但它不会更新目标用户的密码。我希望语句更新,在这种情况下,用户569(这是$ user_id等于)。

mysqli_query($connection, 'UPDATE users SET hashed_pass = ' . mysql_escape($newpassword).' WHERE user_id ='.mysql_escape($user_id).'');

mysql_escape函数只是去除斜线并转义变量,所以我知道这不是原因。我还确保该表实际上具有user_id列,并且变量$ user_id是569,它与我想要更新的用户匹配。运行命令后,我没有收到任何错误,我在查询下有一个echo语句,以确认它已运行。

我有什么想法我做错了吗?

更新:正如大家所建议的那样,将我的代码转换为准备好的语句,现在它正在运行。

$stmt = mysqli_prepare($connection,  "UPDATE users SET hashed_pass = ? WHERE user_id = ?");                             
mysqli_stmt_bind_param($stmt, "si", $newpassword, $user_id);
mysqli_stmt_execute($stmt);
php sql mariadb
1个回答
1
投票

使用准备好的陈述将是第一步。 PHP mysqli_prepare

$stmt = mysqli_prepare($connection, "UPDATE users SET hashed_pass = ?")

mysqli_stmt_bind_param($stmt, "s", $citynewpassword);

mysqli_stmt_execute($stmt);
© www.soinside.com 2019 - 2024. All rights reserved.