Page 1 sur 1

PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation

Posté : 10 janv. 2023, 13:57
par davlongin
Bonjour,

Dans le WHERE à la place de mettre une variable ($_GET["pdt"] j'ai mis un drapeau (:id) et je dis ce qu'il doit mettre à la place de ce drapeau grâce au tableau que j'ai crée : array('id' => $_GET['pdt']).

Mais j'ai une erreur de syntaxe.
<?php
    require("config/connexion.php");
    if(isset($_GET["pdt"])){
        $data = array();
        $req = $access->prepare('SELECT id FROM produits WHERE id=:id', array('id' => $_GET['pdt']));
        $req->execute($data);
        $req->fetchAll(PDO::FETCH_OBJ);
        echo"<br>";
        var_dump($req);

    }else{
        die("Vous n'avez pas sélectionné de produit à ajouter au panier");
    }
    var_dump($_GET);

?>
Merci de bien vouloir m'aider SVP.

Re: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation

Posté : 10 janv. 2023, 14:20
par ynx
Bonjour,

Le tableau des valeurs doit être passé dans la méthode execute() et non dans la méthode prepare()
Voir l'exemple #2 sur https://www.php.net/manual/fr/pdostatement.execute.php

Re: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation

Posté : 10 janv. 2023, 15:31
par davlongin
Merci ! Grâce à ton conseil j'ai être débloquer.

Bonne journée !
require("config/connexion.php");
    if(isset($_GET["pdt"])){
        // $data = array();
        // , array('id' => $_GET['pdt'])
        $req = $access->prepare('SELECT id FROM produits WHERE id=:id');
        $req->execute(array('id' => $_GET['pdt']));
        $req->fetchAll(PDO::FETCH_OBJ);
        echo"<br>";
        var_dump($req);

    }else{
        die("Vous n'avez pas sélectionné de produit à ajouter au panier");
    }
    var_dump($_GET);