2010-11-19 5 views
0

Ma requête ci-dessous met à jour un enregistrement à l'aide de variables pour identifier les données dans la base de données. Je pense que ma syntaxe est correcte bien qu'elle puisse être fausse. En outre, je suis absolument sûr que les variables ont des valeurs légitimes en eux. Pourquoi cette requête ne fonctionnera-t-elle pas?La requête SQL ne lit pas les variables

UPDATE `databasename`.`".$tablename."` SET `stock` = '".$f."' WHERE `myerspark`.`item_id` ='".$g."' LIMIT 1 

Merci les gars. Tom, oui j'ai essayé ça et ça marche bien. Mais c'est frustrant parce que je fais écho aux trois variables à la fin du script et elles affichent toutes des valeurs légitimes.

Hamish, comment puis-je voir ces erreurs?

Jon_Darkstar, ces variables sont affectées dans les lignes de code précédentes. Voici tout mon bloc de code:

//variables $f, $g, and $tablename assigned from POST variables in previous lines 
mysql_select_db($database_Yoforia, $Yoforia); 
mysql_query("UPDATE `yoforiainventory`.`".$tablename."` SET `stock` = '".$f."' WHERE `".$tablename."`.`item_id` ='".$g."' LIMIT 1 "); 
mysql_close($Yoforia); 

echo ($f); 
echo ($tablename); 
echo ($g); 

Encore une fois, quand je fais l'écho de ces variables, ils sortent tous avec de bonnes valeurs.

+0

Quelle erreur obtenez-vous? Avez-vous essayé de coder en dur les valeurs de la variable PHP juste pour voir qu'il s'exécute bien? – Tom

+0

Ça a l'air bien. Quelles erreurs obtenez-vous de MySQL? Ils sont généralement assez descriptifs. – Hamish

+0

Si vous affectez cette requête à une variable, quelle est la valeur de cette variable après cette ligne de code? une autre chose que je ferais est d'essayer des variables à l'intérieur de la chaîne (analyse de variables). – Mario

Répondre

1

Je suis un peu confus ce qui appartient à SQL, ce qui appartient à PHP, d'où vient cette chaîne, etc. Ce que vous avez peut être bien (s'il y a une double citation avant et arrière que je ne vois pas.

je serais probablement écrire comme ceci:

$sql = "UPDATE databasename.$tablename SET stock = '$f' WHERE myerspark.item_id = '$g' LIMIT 1" 
$res = mysql_query($sql, $conn)..... 

vous pouvez backtick plus de choses (et/ou faire mysql_real_escape) pour « une sécurité supplémentaire ;, mais qui couvre l'idée

Quelle est. myerspark? Je ne vois pas comment cela se rapporte à la requête, c'est probablement que vous êtes sens réel erreur complète, s'il y a une erreur de syntaxe ou non. Si myerspark est une table séparée de nom de table, alors vous avez un problème ici, peut-être un JOIN que vous devriez avoir?