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

Eléphanteau du PHP | 45 Messages

10 janv. 2023, 13:57

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.

ynx
Mammouth du PHP | 586 Messages

10 janv. 2023, 14:20

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

Eléphanteau du PHP | 45 Messages

10 janv. 2023, 15:31

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);