2009-04-01 11 views
0
INSERT INTO `test` (`x`, `y`) WHERE `id` = `$id` 

VALUES (`$x`, `$y`) 

Quel est le problème avec cette requête? Je cours ceci dans une fonction mysql_query() dans un dossier de php.Sql La requête ne fonctionne pas!

+0

Pouvez-vous élaborer sur ce que vous espérez accomplir avec cette requête? –

Répondre

6

Vous ne pouvez pas utiliser une clause Where avec une insertion. Vous insérez une ligne ou vous n'êtes pas.

4

Si vous essayez de mettre à jour des informations à partir de la base de données, utilisez UPDATE au lieu de INSERT INTO dans la requête que vous exécutez.

0

Vous devez supprimer le "WHERE id = $ id" - cela n'a aucune signification dans une instruction INSERT.

2

Vous ne pouvez pas utiliser une clause where sur un insert. Je pense que vous pourriez vouloir une déclaration de mise à jour:

update test set 
x = $x, 
y = $y 
where id = $id 

Lorsque vous insérez une nouvelle valeur dans la base de données, vous n'ont généralement pas une valeur d'identité jusqu'à ce que après l'insertion (en supposant que vous utilisez auto ID générés).

0

Alors, que ce soit

test MISE À JOUR SET x = 'x', 'y $' y = WHERE id = '$ id';

OU

INSERT INTO test ('x', 'y') VALUES ('$ x', 'y $');

comme indiqué dans d'autres messages - vous ne pouvez pas faire un INSERT avec un WHERE.

0

Notez également que vous devez utiliser des guillemets simples (') plutôt que des guillemets (`) pour les valeurs. Les guillemets sont utilisés pour référencer les noms de colonne/noms de champs.

Ce:

`field` = '$value' 

plutôt que ceci:

`field` = `$value` 

à moins que vous ne voulez vraiment faire référence à un autre champ. C'est parfois ce que vous voulez quand vous copiez des valeurs ou des JOINs correspondants. Mais parce que vous avez une variable, je suppose que vous voulez utiliser des guillemets simples plutôt que des guillemets.

Questions connexes