Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySql 5.5] Problème de requête préparée

Syntaxe correcte ou incorrecte avec ?

Sujet résolu
    7 janvier 2012 à 19:20:37

    Bonsoir !

    Après avoir cherché partout sur le forum des bases de données du site et d'autres forums, je n'ai trouvé aucune réponse à mon problème, alors je partage avec vous ce mystère...

    Je souhaite faire une requête préparée grâce au code suivant :

    $select_marqueur_auteur = $bdd->query('SELECT marqueur_auteur FROM recensements WHERE id_anecdote=?');
    $select_marqueur_auteur->execute(array($_POST['id_anecdote']));

    L'erreur systématique que j'obtiens sur la page du navigateur est la suivante :

    Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

    - J'ai vérifié la syntaxe qui me paraît juste
    - A titre de vérification, j'obtiens une page qui fonctionne correctement lorsque je remplace le "?" par un nombre ("84" dans mon cas) qui se trouve dans la table "recensements" et dans la colonne "id_anecdote"
    -Avec cette valeur de vérification "84", j'obtiens aussi une page qui fonctionne et qui me lit correctement la valeur de la colonne "marqueur_auteur" correspondant à $_POST['id_anecdote']="84"
    - Lorsque je teste l'existence de la variable $_POST['id_anecdote'] et sa valeur, elle existe bel et bien sur la page en question avec la bonne valeur
    -Et ce qui m'étonne le plus dans tout ça, c'est que j'ai déjà fait plusieurs requêtes préparées sur mon site et qu'elles fonctionnent à merveille (aucun problème de syntaxe) comme par exemple :

    $reponse = $bdd->prepare('SELECT DATE_FORMAT(date, \'%d/%m/%Y\') AS date,titre FROM recensements WHERE id= ? and date < SUBDATE(NOW(), INTERVAL 48 HOUR)');

    $reponse->execute(array($_GET['page_recensement']));

    Merci beaucoup pour votre aide parce que je suis vraiment bloqué depuis un moment avec ça...

    Bonne soirée !
    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2012 à 19:37:12

      Faut choisir
      soit prepare() + execute()
      soit query() + quote()

      T.
      • Partager sur Facebook
      • Partager sur Twitter
        8 janvier 2012 à 11:01:06

        Bonjour,

        Merci beaucoup, ça marche ! J'avais pas du tout vu l'erreur, à vrai dire je suis grand débutant avec php et mysql et j'ai encore plein de choses à apprendre !

        Bon week-end !
        • Partager sur Facebook
        • Partager sur Twitter

        [MySql 5.5] Problème de requête préparée

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown