2009-12-17 5 views
0

Я пытаюсь создать систему поиска паролей на своем сайте, и у меня возникают проблемы с обновлением поля сброса пароля в моей базе данных. Я все пробовал, но ничего не работает.Обновление базы данных SQL с помощью PHP

Это мой код до сих пор:

$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

Не уверены, что это единственная проблема, но я предполагаю, что ваш passwordreset поля строка в базе данных - для хранения конкатенации нескольких md5, которые являются строками, она должна.

Таким образом, должно быть цитаты Arround значение, которое вы положили в этой области, в запросе 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

0

Являются ли две разрывы после $passwordreset умышленными? Можете ли вы попробовать их удалить?

+0

Они не должны быть проблемой. У меня много длинных инструкций MySQL здесь с разрывами строк, а у php/MySQL нет проблем с ними. – flokra

0

Я не уверен, если вы получите пустую ошибку запроса для этого, но вам нужны клещи вокруг значений:

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

Я предполагаю, что обратные кавычки вокруг имен столбцов отсутствуют, попробуйте:

mysql_query("UPDATE members SET `passwordreset` = '$passwordreset' WHERE `id` = '$id'"); 
Смежные вопросы