Aide requét sql

Résolu/Fermé
jalalnet Messages postés 294 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 30 juillet 2023 - 13 oct. 2010 à 14:23
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 - 13 oct. 2010 à 15:20
Bonjour,
j'aimerai faire un requet pour ajouté des donné au tableau BDD (un requet préparé)
la requét s'excute sans acune erreur mais l'ajout passe pas
voila ma requét :

$req = $bdd->prepare('INSERT INTO jeux_video(?, ?) VALUES( ?,?)');

$req->execute(array($_POST['nom_champ1'],$_POST['nom_champ2'],$_POST['value1'],$_POST['value2']));

echo 'Le jeu a bien été ajouté !';

lorsque j'essay la requet avec des champs définis la requét passe



A voir également:

3 réponses

nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
13 oct. 2010 à 15:20
Un champs n'est pas une valeur.

Un champs est une définition de zone dans une table, une valeur est son contenu.

Une query préparée va modifier les paramètres pour en faire du contenu (tes noms de champs deviendront des chaines de caractères avec le ' de chaque coté).

Si tu peux récupérer l'erreur tu verra que ton erreur vient de là.

Une query préparé dans ton cas serait :

$req = $bdd->prepare('INSERT INTO jeux_video(nom_champ1,nom_champ2) VALUES( ?,?)');
1
nicdev Messages postés 233 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 13 décembre 2010 87
Modifié par nicdev le 13/10/2010 à 14:59
Bonjour,

De mémoire une query préparée (surtout un insert) doit obligatoirement avoir les champs de défini car ce sont des champs et non des valeurs. Dans ton cas cela donnerai :

INSERT INTO jeux_video('nom_champ1','nom_champ2') VALUES ('value1','value2')

et non une la requête correcte :

INSERT INTO jeux_video(nom_champ1,nom_champ2) VALUES ('value1','value2')

Le passage de paramètre n'est valable que pour des valeurs pas des noms de champs.

Une autre solution qui oblige de renseigné tous les champs de ta table avec des valeurs :

INSERT INTO jeux_video VALUES ('value1','value2')

Il faut le même nombre de valeur que le nombre de champs et dans le même ordre que les champs de la table.

NicDev
0
jalalnet Messages postés 294 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 30 juillet 2023 10
13 oct. 2010 à 15:07
donc ya aucune manière pour passer les champs + les valeurs ?
0