2009-12-17 5 views
0

Je suis en train de faire un système de récupération de mot de passe sur mon site, et je rencontre des problèmes de mise à jour du champ de réinitialisation de mot de passe dans ma base de données. J'ai tout essayé, mais rien ne semble fonctionner.base de données SQL en utilisant PHP

Ceci est mon code à ce jour:

$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"); 

Lorsque je tente d'insérer les données que je reçois l'erreur:

Error: Query was empty 

Toute aide serait appréciée, Merci.

+0

Êtes-vous sûr que le message provient de cette requête particulière? Comment obtenez-vous l'erreur? –

Répondre

2

ne suis pas sûr qu'il est le seul problème, mais je devine votre champ passwordreset est une chaîne, dans la base de données - pour stocker une concaténation de plusieurs md5, qui sont des chaînes, il doit.

Ainsi, il devrait y avoir des citations ARROUND la valeur que vous mettez dans ce domaine, dans la requête SQL: dans un cas général

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


Et, vous devez échapper à vos valeurs de chaîne avec mysql_real_escape_string:

Cela ne changera rien ici, car il n'y a pas de citation dans un md5 ... Mais c'est une bonne habitude de toujours le faire, de ne jamais se retrouver dans une situation où cela était nécessaire et vous ne l'avez pas fait t le fais.

+0

Merci pour votre réponse, ne fonctionne toujours pas, obtenir la même erreur – Crazyd22

0

sont les deux sauts de ligne après $passwordreset intentionnelle? Pouvez-vous essayer de les supprimer?

+0

Ils ne devraient pas poser de problème. J'ai beaucoup de longues déclarations MySQL ici avec des sauts de ligne et PHP/MySQL n'ont aucun problème avec eux. – flokra

0

Je ne sais pas, si vous obtenez une erreur de requête vide pour cela, mais vous avez besoin de tiques autour des valeurs:

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

Je suppose que les guillemets obliques autour des noms des colonnes sont manquantes, essayez:

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