probleme requete preparer et insert into

Petit nouveau ! | 2 Messages

24 avr. 2011, 17:02

Bonjour
J'ai deja fait des requete preparé avec des select mais la j'ai un soucis avec un Insert Into mais j'ai l'erreur suivante:
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Numero', 'Pature') VALUES (Pature = 'senlis', Numero = '11')' at line 1
Je passe donc deux valeurs via un formulaire que je recupere dans la page suivante dans mon GET
voici mon code
<?php

try
{
$Numero=$_GET['Numero1'];
$Pature=$_GET['Pature'];

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=ferme', 'root', '', $pdo_options);

$req = $bdd->prepare(" INSERT INTO vache ('Numero', 'Pature') VALUES (Pature = ?, Numero = ?)");
$req->execute(array($_GET['Pature'],$_GET['Numero1']));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>

Donc voila si vous pouviez m'aider car la je bloc vraiment
merci d'avance.

Eléphant du PHP | 241 Messages

24 avr. 2011, 17:37

Salut,
dans la requête SQL soit tu ne mets que des ? pour les champs (donc pas de "Pature = ?") , soit par exemple :Pature
Avec les ? l'ordre des champs est important, avec les :blalba ca ne l'est pas.
Pas de guillemet simple non plus dans le nom des champs !

Donc soit :
$req = $bdd->prepare(" INSERT INTO vache (Numero, Pature) VALUES (?,?)");
$req->execute(array($_GET['Numero1'],$_GET['Pature']));
Soit :
$req = $bdd->prepare(" INSERT INTO vache (Numero, Pature) VALUES (:numero,:pature)");
$req->execute(array(
'numero'=>$_GET['Numero1'],
'pature'=>$_GET['Pature']
));

Petit nouveau ! | 2 Messages

24 avr. 2011, 17:40

Merci beaucoup pour ton aide !!!