Erreur symple de syntax PHP, PDO
Résolu/Fermé
FlyAwayExpert7
Messages postés
70
Date d'inscription
vendredi 26 décembre 2014
Statut
Membre
Dernière intervention
14 novembre 2016
-
Modifié par jordane45 le 3/05/2015 à 02:23
FlyAwayExpert7 Messages postés 70 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 - 3 mai 2015 à 15:56
FlyAwayExpert7 Messages postés 70 Date d'inscription vendredi 26 décembre 2014 Statut Membre Dernière intervention 14 novembre 2016 - 3 mai 2015 à 15:56
A voir également:
- Erreur symple de syntax PHP, PDO
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 3005 france tv - Forum TV & Vidéo
- Erreur 5000 france tv - Forum iPhone
4 réponses
Zephirr
Messages postés
317
Date d'inscription
mardi 30 décembre 2014
Statut
Membre
Dernière intervention
6 novembre 2015
100
19 avril 2015 à 14:51
19 avril 2015 à 14:51
La virgule en trop à la fin de ton
array?
ReDLoG
Messages postés
243
Date d'inscription
mardi 12 mars 2013
Statut
Membre
Dernière intervention
28 octobre 2021
57
19 avril 2015 à 18:00
19 avril 2015 à 18:00
Bonsoir,
J'aimerais comprendre mon erreur de syntax...
pour ça, il faut savoir utiliser la gestion des erreurs avec les exceptions PDO lorsque tu es en phase de développement :
Plus d'info ici https://www.php.net/manual/fr/pdo.error-handling.php
Cordialement.
J'aimerais comprendre mon erreur de syntax...
pour ça, il faut savoir utiliser la gestion des erreurs avec les exceptions PDO lorsque tu es en phase de développement :
<?php try { $bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp); } catch(PDOException $e) { echo "Erreur de connection à la BDD : ".$e->getMessage(); die(); } if(!empty($_GET['del'])) { try { $req_del = $bdd->prepare('DELETE FROM '.$prefixe.'boutique WHERE id=:id'); $req_del->execute(array(':id' => $_GET['del'])); } catch(PDOException $e) { echo "Erreur dans la requete delete : ".$e->getMessage(); die(); } } if(!empty($_POST['produit'])) { try { $req_new = $bdd->prepare('INSERT INTO '.$prefixe.'boutique SET article=:article, description=:desc, categorie=:categorie, image=:image, date=:date, heure=:heure, commande=:commande, valeur=:prix, valeur_ig=:prixig, requis=:requis, limite=:limite, serveur=:serveur'); $req_new->execute(array( ':article' => $_POST['produit'], ':desc' => $_POST['desc'], ':categorie' => $_POST['categorie'], ':image' => $_POST['img'], ':commande' => $_POST['commande'], ':prix' => $_POST['prix'], ':prixig' => $_POST['prixig'], ':achat' => "0", ':date' => "0", ':heure' => "0", ':requis' => $_POST['requis'], ':limite' => $_POST['limite'], ':serveur' => $_POST['serveur'] )); } catch(PDOException $e) { echo "Erreur dans la requete insert : ".$e->getMessage(); die(); } } ?>
Plus d'info ici https://www.php.net/manual/fr/pdo.error-handling.php
Cordialement.
FlyAwayExpert7
Messages postés
70
Date d'inscription
vendredi 26 décembre 2014
Statut
Membre
Dernière intervention
14 novembre 2016
3
30 avril 2015 à 22:00
30 avril 2015 à 22:00
Bonsoir,
merci de ta réponce rapide mais cela ne fonctionne touhours pas!
Aucune erreur!
Que faire?
Cordialement,
FlyAwayExpert7
merci de ta réponce rapide mais cela ne fonctionne touhours pas!
Aucune erreur!
Que faire?
Cordialement,
FlyAwayExpert7
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
Modifié par jordane45 le 3/05/2015 à 02:37
Modifié par jordane45 le 3/05/2015 à 02:37
Bonjour,
Ta question a commencée par : J'ai une erreur de syntaxe ... tu as donc du avoir un message d'erreur à un moment ou un autre.... et dans ce cas... il faut nous le donner dans son intégralité (car en général.. il contient la ligne concernée...)
Ensuite, quand je regarde ta requête, il y a quelque chose qui me gène...
En effet tu as visiblement créé un champ du nom de "limite" ... alors qu'il s'agit d'un mot clé réservé à Mysql....
Il serait donc souhaitable de le renommer autrement.
Et enfin... as tu essayé de faire un peu de debug ?
Par exemple.. ajouter au début de ta page un
permettrait de savoir si déjà tu envoies bien quelque chose..;et quoi...
PS: Je conseille toujours
-De séparer la requête de son exécution (idem pour les paramètres...). cela permet d'en faire des ECHO si besoin pour voir ce qui pourrait bloquer....
-De faire des retours à la ligne pour présenter les requêtes... cela les rend plus lisible.
-Récupérer les variables POST AVANT de s'en servir (via ISSET pour s'assurer qu'elles existent bien..)
par exemple :
comme ceci :
PS: Si le souci se passe au niveau de la requête... n'hésites pas à la tester en direct dans ta BDD (en remplaçant les variables issues du print de $params....) cela t'aidera à voir où se trouvent les éventuelles erreurs.
Cordialement,
Jordane
Ta question a commencée par : J'ai une erreur de syntaxe ... tu as donc du avoir un message d'erreur à un moment ou un autre.... et dans ce cas... il faut nous le donner dans son intégralité (car en général.. il contient la ligne concernée...)
Ensuite, quand je regarde ta requête, il y a quelque chose qui me gène...
En effet tu as visiblement créé un champ du nom de "limite" ... alors qu'il s'agit d'un mot clé réservé à Mysql....
Il serait donc souhaitable de le renommer autrement.
Et enfin... as tu essayé de faire un peu de debug ?
Par exemple.. ajouter au début de ta page un
print_r($_POST);
permettrait de savoir si déjà tu envoies bien quelque chose..;et quoi...
PS: Je conseille toujours
-De séparer la requête de son exécution (idem pour les paramètres...). cela permet d'en faire des ECHO si besoin pour voir ce qui pourrait bloquer....
-De faire des retours à la ligne pour présenter les requêtes... cela les rend plus lisible.
-Récupérer les variables POST AVANT de s'en servir (via ISSET pour s'assurer qu'elles existent bien..)
par exemple :
$produit = isset($_POST['produit'])?$_POST['produit']:'';
comme ceci :
if(!empty($_POST['produit'])) { try { // récupération des variables: $produit = isset($_POST['produit'])?$_POST['produit']:''; //... à faire pour les autres... // Array de param pour la requête: $params = array( ':article' => $produit, ':desc' => $_POST['desc'], ':categorie' => $_POST['categorie'], ':image' => $_POST['img'], ':commande' => $_POST['commande'], ':prix' => $_POST['prix'], ':prixig' => $_POST['prixig'], ':achat' => "0", ':date' => "0", ':heure' => "0", ':requis' => $_POST['requis'], ':limite' => $_POST['limite'], ':serveur' => $_POST['serveur'] ); // requête : $sql = "INSERT INTO ".$prefixe."boutique SET article=:article , description=:desc , categorie=:categorie , image=:image , date=:date , heure=:heure , commande=:commande , valeur=:prix , valeur_ig=:prixig , requis=:requis , limite=:limite , serveur=:serveur"; //----------------------------------- // le temps des tests : //----------------------------------- echo "<pre> Requete : <br>".$sql; echo "<br> Params : <br>"; print_r($params); echo "</pre>"; //----------------------------------- $req_new = $bdd->prepare($sql); $req_new->execute($params); } catch(PDOException $e) { echo "Erreur dans la requete insert : ".$e->getMessage(); die(); } }
PS: Si le souci se passe au niveau de la requête... n'hésites pas à la tester en direct dans ta BDD (en remplaçant les variables issues du print de $params....) cela t'aidera à voir où se trouvent les éventuelles erreurs.
Cordialement,
Jordane
FlyAwayExpert7
Messages postés
70
Date d'inscription
vendredi 26 décembre 2014
Statut
Membre
Dernière intervention
14 novembre 2016
3
3 mai 2015 à 12:51
3 mai 2015 à 12:51
Merci de ta réponse Jordane,
Mon array est correct, ma requête SQL est juste et PDO ne génère aucune erreur!
Je ne comprend pas.
Cordialement
Mon array est correct, ma requête SQL est juste et PDO ne génère aucune erreur!
Je ne comprend pas.
Cordialement
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
3 mai 2015 à 13:04
3 mai 2015 à 13:04
Tu as testé la requête en direct dans ta bdd (c'est à dire via phpmyadmin par exemple) ??
FlyAwayExpert7
Messages postés
70
Date d'inscription
vendredi 26 décembre 2014
Statut
Membre
Dernière intervention
14 novembre 2016
3
3 mai 2015 à 15:56
3 mai 2015 à 15:56
Merci de toutes vos réponses, le problème était pour la variable achat non présente dans la requète.
Merci.
-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
Merci.
-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
19 avril 2015 à 17:06
Merci
19 avril 2015 à 17:32
soit en commentaire?
1 mai 2015 à 15:51