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



我正在编写一个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 mysqli_prepare

$stmt = mysqli_prepare($connection, "UPDATE users SET hashed_pass = ?")
mysqli_stmt_bind_param($stmt, "s", $citynewpassword);
mysqli_stmt_execute($stmt);

相关内容

最新更新