Erreur symple de syntax PHP, PDO
Résolu
FlyAwayExpert7
Messages postés
82
Statut
Membre
-
FlyAwayExpert7 Messages postés 82 Statut Membre -
FlyAwayExpert7 Messages postés 82 Statut Membre -
Bonjour,
J'aimerais comprendre mon erreur de syntax, je suis sur qu'elle est toute symple...
Merci d'avance de votre aide!
cordialement,
FlyAwayExpert7
LE code:
EDIT : Ajout du langage dans les balises de code.
-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
J'aimerais comprendre mon erreur de syntax, je suis sur qu'elle est toute symple...
Merci d'avance de votre aide!
cordialement,
FlyAwayExpert7
LE code:
<?php
if(!empty($_GET['del'])) {
//$bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp);
$req_del = $bdd->prepare('DELETE FROM '.$prefixe.'boutique WHERE id=:id');
$req_del->execute(array(':id' => $_GET['del']));
}
if(!empty($_POST['produit'])) {
$bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp);
$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'],
));
}
?>
EDIT : Ajout du langage dans les balises de code.
-----------------------------------------------
Conception web · Développement web · Design graphique par passion.
A voir également:
- Erreur symple de syntax PHP, PDO
- Expert php pinterest - Télécharger - Langages
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
4 réponses
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.
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
Merci
$bdd = new PDO(sprintf('mysql:host=%s;dbname=%s', $serveur, $base), $user, $mdp);soit en commentaire?