使用PHP更新SQL数据库

时间:2009-12-17 11:58:03

标签: php sql database sql-update

我正在尝试在我的网站上创建密码检索系统,而且我在更新数据库中的密码重置字段时遇到问题。我已经尝试了一切,但似乎没有任何效果。

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

$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

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

4 个答案:

答案 0 :(得分:2)

不确定这是唯一的问题,但我猜你的密码重置字段是一个字符串,在数据库中 - 存储多个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中没有引用......但总是这样做是一个好习惯,永远不会发现自己处于必要的情况而你没有这样做

答案 1 :(得分:0)

$passwordreset故意后的两个换行符?你可以尝试删除它们吗?

答案 2 :(得分:0)

我不确定,如果你得到一个空的查询错误,但你需要围绕这些值滴答:

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

答案 3 :(得分:0)

我想有关列名称的反复记录缺失了,请尝试:

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