2010-04-03 7 views
0

La requête simple ci-dessous ne fonctionne pas. Une idée pourquoi? Lorsque je fais écho aux trois variables, les valeurs correctes sont renvoyées, donc je sais que j'ai des variables.La requête ne fonctionne pas

Merci à l'avance,

John

$comment = $_POST['comment']; 
$uid = $_POST['uid']; 
$subid = $_POST['submissionid']; 


echo $comment; 
echo $uid; 
echo $subid; 

mysql_connect("mysqlv12", "username", "password") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 


$query = sprintf("INSERT INTO comment VALUES (NULL, '%s', '%s', '%s', NULL, NULL)", $uid, $subid, $comment); 

mysql_query($query); 
+2

mysql_query ($ query) ou die (mysql_error()); // votre erreur – Leo

+0

Dites-nous ce que mysql_error est et je suis sûr que quelqu'un aura la réponse. Probablement juste que vous avez le mauvais nombre de valeurs ou on n'est pas autorisé à être nul. –

+0

Si les ID sont des nombres, traitez-les en% d et insérez-les sans '', juste pour suivre les bonnes pratiques – Ben

Répondre

1

La requête semble bien sur la surface. Quelles sont les valeurs que vous insérez? Est-ce que l'un d'eux a une seule citation? Je suppose que le champ de commentaire est le coupable le plus probable pour cela. Votre code est totalement vulnérable à l'injection SQL telle qu'elle est actuellement. Vous devez remplacer toutes les affectations de variables comme suit, pour un minimum de sécurité:

$comment = $_POST['comment']; 

devient

$comment = mysql_real_escape_string($_POST['comment']); 

Cela prendra aussi d'ailleurs soin de tous les guillemets simples qui peuvent être la cause de votre requête à l'échec . De plus, vous avez besoin de vérifier si la requête a réussi:

mysql_query($query) or die (mysql_error()); 

qui immédiatement vous dire s'il y avait des problèmes (sql erreur de syntaxe, le serveur de base de données est morte, la connexion a échoué, etc ...)

Questions connexes