使用PHP更新SQL数据库

问题描述:

我正在尝试在我的网站上创建密码检索系统,并且在更新数据库中的密码重置字段时遇到问题。我尝试了一切,但似乎没有任何工作。使用PHP更新SQL数据库

这是我到目前为止的代码:

$passwordreset = md5(mt_rand()) . md5(mt_rand()) . md5(mt_rand()); 

$con = mysql_connect("localhost","XXX","XXX"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("database", $con); 

mysql_query("UPDATE members SET passwordreset = $passwordreset WHERE id = $id"); 

当我尝试插入数据出现错误:

Error: Query was empty 

任何帮助,将不胜感激,谢谢 。

+0

确定此消息来自这个特定的查询?你如何得到错误? – 2009-12-17 12:51:39

不知道这是唯一的问题,但我猜你passwordreset场数据库中的一个字符串 - 用于存储多个md5的串接,它们必须是字符串。

所以,应该有以防万一你把这个字段的值引号,在SQL查询:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = $id"); 


而且,在一般情况下,你应该mysql_real_escape_string逃脱你的字符串值:

mysql_query("UPDATE members SET passwordreset = '" 
    . mysql_real_escape_string($passwordreset) 
    . "' WHERE id = $id"); 

它不会改变任何东西,因为有一个MD5无报价...但它是一个很好的做法,始终做到这一点,永远不会发现自己在一个情况下,有必要和你没”不要这样做。

+0

感谢您的回复,仍然无法正常工作,得到同样的错误 – Crazyd22 2009-12-17 12:12:15

$passwordreset之后的两条线是故意的吗?你可以尝试删除它们吗?

+0

他们不应该是一个问题。我有很多很长的MySQL语句,换行符和php/MySQL都没有问题。 – flokra 2009-12-17 12:46:30

我不知道,如果你得到了这个空查询错误,但你需要蜱周围的值:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = '$id'"); 

我想周围的列名反引号丢失,尝试:

mysql_query("UPDATE members SET `passwordreset` = '$passwordreset' WHERE `id` = '$id'");