PHP SQL UPDATE 坏了?

标签 php mysql

我正在尝试进行更新查询来更新用户以拥有密码。更新语句非常简单,现在已经让我困惑了大约 12 个小时。

我已经在 3.5 页的 google 搜索中阅读了与此相关的所有内容。但由于某种原因,这些建议都不适合我!

这是“原始”形式的 UPDATE 查询:

$sql_update = "UPDATE users_sensitive SET password = '$password_hash', ch_password = '$password_hash' WHERE email_hash = '$email_hash'";
$result_update = mysql_query($sql_update) or die(mysql_error());

当我执行此更新查询时,我没有收到任何错误或任何返回信息。它也只是不更新​​。

下面是相同代码的另一个版本:

$sql_update = "UPDATE users_sensitive SET password = '" . $password_hash . "', ch_password = '" . $password_hash. "' WHERE email_hash = '" . $email_hash . "'";
$result_update = mysql_query($sql_update) or die(mysql_error());

同样,什么也没有发生。

当我在这里输入实际数字而不是 php 变量时:

$sql_update = "UPDATE users_sensitive SET password = '700b5b23b511d974fe9eeb17ad350b33', ch_password = '700b5b23b511d974fe9eeb17ad350b33' WHERE email_hash = 'ac24dab060a172d8c0b3679d8ae61cac'";
$result_update = mysql_query($sql_update) or die(mysql_error());

(别担心,这不是敏感信息)它确实会更新...

那么,我假设我的语法是错误的?我知道这些是字符串而不仅仅是数字,所以我需要在它们周围加上单引号。我有两个需要回显的变量,它们都准确地显示了它们应该是什么。我什至尝试在列名称周围使用反引号,但这没有任何作用?

我做了一个 var_dump,它返回“true”。

当我在 $sql_update 上进行打印时,我得到:

UPDATE users_sensitive SET password = '700b5b23b511d974fe9eeb17ad350b33', ch_password = '700b5b23b511d974fe9eeb17ad350b33' WHERE email_hash = 'ac24dab060a172d8c0b3679d8ae61cac'

这里没有空格。 当我打印 $result_update 时,它​​会显示: 1

回答 感谢 bemace、James Anderson、VolkerK、alex 和其他人!

问题是代码中存在一个奇怪的换行符,创建的空格与数据库中的空格不同。

回溯之后,我注意到在本页代码的最开始处,我使用了 GET 从 URL 中获取哈希值。在创建变量时,在测试期间,我向变量添加了换行符,仅用于测试目的。我(愚蠢地)把换行符留在那里。在隐藏表单字段中使用该变量时,它包含换行符。

从第一行中取出换行符后,一切都匹配了,一切都很好。

如果您正在阅读本文并计划稍后发布,那么发布整个代码可能是值得的。如果我这样做的话,这个问题就会更早得到解决。

再次感谢您的快速响应和故障排除!

最佳答案

没有错误也没有更新告诉我您的 where 子句不匹配任何内容。确保 $email_hash 没有任何前导或尾随空格,并且没有被截断。

不太可能的情况是更新是正在回滚的事务的一部分。

另一种不太可能的可能性:您是否连接到了正确的服务器?

关于PHP SQL UPDATE 坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6516199/

相关文章:

PHP和MVC,多种模型

php - 连接多个表时,Ajax 不调用 php 查询

php - 计算 GROUP_CONCAT 内的值

PHP获取mysql表信息函数

php - 关于在 php 脚本中释放内存的问题

php - 使用 array_multisort 对多维数组进行排序,其中您不知道数组的维度

php - 使用具有多个 namespace 的 SimpleXML 解析 XML

java - 为什么不解决其他模块的 mysql 依赖关系

php - 使用 PDO 调用带有 Out 参数的存储过程

php - 搜索功能在我的 PHP MySQL 查询中不起作用