PHP SQL UPDATE坏了吗?

时间:2011-06-29 05:40:07

标签: 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());

当我这样做更新Query时,我没有得到任何错误或任何回复。它也只是不更新​​。

以下是同一代码的另一个演绎:

$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,它回来了“真实”。

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

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

这里没有空格。 当我打印$ result_update时,它会出现:1

ANSWER 谢谢bemace,James Anderson,VolkerK,alex和其他人!

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

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

在第一行中脱线之后,所有内容都匹配,一切都很好。

如果您正在阅读本文并计划稍后发布,则发布整个代码可能是值得的。如果我有这个问题,这个问题早就得到了解决。

再次感谢快速反应和解决问题!

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

感谢bemace,James Anderson,VolkerK,alex和其他人!

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

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

在第一行中脱线之后,所有内容都匹配,一切都很好。

如果您正在阅读本文并计划稍后发布,则发布整个代码可能是值得的。如果我有这个问题,这个问题早就得到了解决。

再次感谢快速反应和解决问题!