Requete insert PDO
Résolu/Fermé
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
21 avril 2013 à 23:20
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 22 avril 2013 à 17:05
jeremy.s Messages postés 1226 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 2 septembre 2013 - 22 avril 2013 à 17:05
12 réponses
Utilisateur anonyme
22 avril 2013 à 10:28
22 avril 2013 à 10:28
Salut salut,
Je ne comprends pas vraiment de quel if tu parles!
Parce que si l'insertion en base se fait après avoir rempli un formulaire, quelle condition voudrais tu rajouter pour enregistrer ou non?
Je ne comprends pas vraiment de quel if tu parles!
Parce que si l'insertion en base se fait après avoir rempli un formulaire, quelle condition voudrais tu rajouter pour enregistrer ou non?
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 10:50
22 avril 2013 à 10:50
Celui-ci:
if ($db-> prepare($requete)==true) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Votre demande d'information a été enregistrée");
else
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
if ($db-> prepare($requete)==true) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Votre demande d'information a été enregistrée");
else
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
Utilisateur anonyme
22 avril 2013 à 11:37
22 avril 2013 à 11:37
Ah ok en fait ton message "Votre demande d'information a été enregistrée" ne s'affiche jamais? Si c'est ça tu peux faire le test dans l'autre sens , parce que la méthode prepare() retourne un objet PDOStatement si la requête passe et false dans l'autre cas. Donc if($db->prepare(...)==false){...}else{...}
Après si je peux me permettre, je trouverai mieux de faire l'ensemble des tests sur les valeurs à insérer avant l'exécution de manière à ne pas soumettre la requête s'il manque un champ ou s'il est erroné. De cette manière tu peux renvoyer sur le formulaire s'il a mal été rempli, et tu n'as pas besoin de faire un test sur le retour de l'insertion, car si tes tests sont bien fait le code n'ira pas jusqu'à la mise en base de donnée.
Après si je peux me permettre, je trouverai mieux de faire l'ensemble des tests sur les valeurs à insérer avant l'exécution de manière à ne pas soumettre la requête s'il manque un champ ou s'il est erroné. De cette manière tu peux renvoyer sur le formulaire s'il a mal été rempli, et tu n'as pas besoin de faire un test sur le retour de l'insertion, car si tes tests sont bien fait le code n'ira pas jusqu'à la mise en base de donnée.
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 11:44
22 avril 2013 à 11:44
J'ai fait sa:
if ($db->prepare($requete)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
sa me dit sa comme erreur:
( ! ) Warning: PDO::prepare() expects parameter 1 to be string
if ($db->prepare($requete)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
sa me dit sa comme erreur:
( ! ) Warning: PDO::prepare() expects parameter 1 to be string
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 11:49
22 avril 2013 à 11:49
JE vien de faire sa et sa me met le bon message sauf que j'ai rien dans ma table dans sqlServer:
if ($db->prepare($sql)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
J'ai juste créer ma source ODBC dans outil d'administration de mon pc et j'ai rien fait aussi dans sql Server. Faut peut-etre que je face quelque chose
if ($db->prepare($sql)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
J'ai juste créer ma source ODBC dans outil d'administration de mon pc et j'ai rien fait aussi dans sql Server. Faut peut-etre que je face quelque chose
Utilisateur anonyme
22 avril 2013 à 11:58
22 avril 2013 à 11:58
Si la connexion réussie et que prepare renvoit bien un objet PDOSTatement, c'est un peu bizarre. Tu utilises deux fois la méthode prepare() je ne sais pas si ça pose problème mais c'est pas terrible, limite garde le retour dans une variable à la première utilisation et test cette variable. Fais un echo de la requête avant l'execution, vérifie le retour de la méthode execute()
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 12:05
22 avril 2013 à 12:05
Dans ma requete insert, values c pas les noms des champs de la table que je doit mettreN
Utilisateur anonyme
22 avril 2013 à 13:59
22 avril 2013 à 13:59
La syntaxe c'est qqch genre insert into matable(col1,col2,col3) values(val1,va2,val3) mais ca tu peux le trouver facilement...
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 15:02
22 avril 2013 à 15:02
sa me dit que sa bien été enregistré alors que j'ai rien dans ma bdd
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
22 avril 2013 à 15:20
22 avril 2013 à 15:20
Il faut executé ta commande ! Si tu mets un prepare, il faut faire un execute ...
Donc :
$db->prepare($sql);
$db->execute() or die(print($db->perror())));
Donc :
$db->prepare($sql);
$db->execute() or die(print($db->perror())));
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 15:32
22 avril 2013 à 15:32
je l'ai déjà juste avant le array
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
22 avril 2013 à 15:45
22 avril 2013 à 15:45
Ah oui pardon, je n'avais pas vu ! Mais quand même le or die au cas ou ya une erreur il te l'affiche ;-)
Sinon :
$requete = $db->prepare($sql);
...
if ($db-> prepare($requete)==true)
Ya pas comme un problème avec tes nom de variable ? Entre autre ce que tu mets dans le prepare
Sinon :
$requete = $db->prepare($sql);
...
if ($db-> prepare($requete)==true)
Ya pas comme un problème avec tes nom de variable ? Entre autre ce que tu mets dans le prepare
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 15:46
22 avril 2013 à 15:46
j'ai mi sa:
if ($db->prepare($sql)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
if ($db->prepare($sql)==false) // appel de la fonction qui permet d'exécuter la requête contenue dans la variable $requete
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
echo ("Votre demande d'information a été enregistrée");
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
22 avril 2013 à 15:49
22 avril 2013 à 15:49
C'est déjà mieux !
Sinon, la tu fais deux fois un prepare, c'est pas spécialement necessaire.
if ($db->prepare($sql)==false)
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
$db->execute() or die(print($db->perror()));
echo ("Votre demande d'information a été enregistrée");
Sinon, la tu fais deux fois un prepare, c'est pas spécialement necessaire.
if ($db->prepare($sql)==false)
echo ("Un problème est survenu lors de l'enregistrement de votre demande d'information");
else
$db->execute() or die(print($db->perror()));
echo ("Votre demande d'information a été enregistrée");
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 15:52
22 avril 2013 à 15:52
je comprend pas trop ce que tu vien de me donner
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
22 avril 2013 à 15:57
22 avril 2013 à 15:57
Bah dans ton code, tu fais un prepare, tu fais un execute.
Ensuite tu fais un if avec un autre prepare. Donc au finale tu fais deux prepare.
Et quand vient même il y aurait une erreur, t'as executé ta requete avant le if donc si il y avait bien une erreur, le execute a quand même été fait avant de vérifier le retour de ton deuxieme prepare.
Ensuite tu fais un if avec un autre prepare. Donc au finale tu fais deux prepare.
Et quand vient même il y aurait une erreur, t'as executé ta requete avant le if donc si il y avait bien une erreur, le execute a quand même été fait avant de vérifier le retour de ton deuxieme prepare.
tortue60
Messages postés
250
Date d'inscription
jeudi 21 mars 2013
Statut
Membre
Dernière intervention
1 septembre 2013
22 avril 2013 à 15:59
22 avril 2013 à 15:59
JE doit mettre quoi ou donc parce que là je suis un pe perdu