使用PHP更新SQL数据库

使用PHP更新SQL数据库,php,sql,database,sql-update,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_se

我试图在我的网站上建立密码检索系统,但在更新数据库中的密码重置字段时遇到问题。我什么都试过了,但似乎都不管用

这是我目前的代码:

$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
任何帮助都将不胜感激,
谢谢。

$passwordreset
之后的两个换行符是故意的吗?你能试着删除它们吗?

我不确定,如果你得到一个空的查询错误,但是你需要在值周围打勾:

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

不确定这是唯一的问题,但我猜你的passwordreset字段是一个字符串,在数据库中——要存储多个md5的串联,这些都是字符串,它必须

因此,在SQL查询中,您在该字段中输入的值周围应该有引号:

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

并且,在一般情况下,您应该使用以下内容转义字符串值:


在这里它不会改变任何东西,因为md5中没有报价。。。但是,始终这样做是一种很好的做法,永远不要发现自己处于这样一种情况:这是必要的,而你没有这样做。

我想列名称周围的反勾缺失,请尝试:

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

谢谢你的回复,仍然不起作用,得到同样的错误,他们不应该是一个问题。我这里有很多带换行符的长MySQL语句,php/MySQL没有问题。你确定消息来自这个特定的查询吗?你是如何得到错误的?
mysql_query("UPDATE members SET `passwordreset` = '$passwordreset' WHERE `id` = '$id'");