我正在尝试在我的网站上创建密码检索系统,而且我在更新数据库中的密码重置字段时遇到问题。我已经尝试了一切,但似乎没有任何效果。
到目前为止,这是我的代码:
$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 :(得分: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'");