Aide requét sql
Résolu
jalalnet
Messages postés
293
Date d'inscription
Statut
Membre
Dernière intervention
-
nicdev Messages postés 233 Date d'inscription Statut Membre Dernière intervention -
nicdev Messages postés 233 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Aide requét sql
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
3 réponses
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( ?,?)');
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( ?,?)');
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
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