Page 1 sur 1

Merci d'intervenir, j'arrive pas a trouver une solution pour Warning: PDOStatement::execute(): SQLSTATE[4200]

Posté : 30 août 2015, 15:03
par agrram
Bonjour,

Tout d'abord merci infiniment de fait que vous avez décidé de m'aider :

j'ai un problème dans ces requêtes Mysql :
$id_client=$_SESSION['id_client'];
$test=$DB->exec("INSERT INTO commande(`id_client`,`id_status`) VALUES($id_client,2)");
$comd=$DB->query("select id_comm from commande where id_client=$id_client AND ((CURRENT_TIMESTAMP - date_cmd)<1000)");
je les ai exécutés dans phpmyadmin: et elles sont bien fonctionné.mais lorsque je reviens vers mon code php. il declare ces warning:

Warning: PDOStatement::execute(): 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 '2)' at line 1 in C:\xampp\htdocs\t\designshop\db.class.php on line 36

Warning: PDOStatement::execute(): 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 'AND ((CURRENT_TIMESTAMP - date_cmd)<1000)' at line 1 in C:\xampp\htdocs\t\designshop\db.class.php on line 28
[/b]


et voila ma db.class :
<?php
class DB{

    private $host='localhost';
    private $username='root';
    private $password='';
    private $database='designshop';
    private $db;

    public  function __construct($host = null,$username=null,$password=null,$database=null){
        if($host!=null){
            $this->host=$host;
            $this->username=$username;
            $this->password=$password;
            $this->database=$database;
        }
        try{
            $this->db= new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->username, $this->password, array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
                PDO::ATTR_ERRMODE =>PDO::ERRMODE_WARNING
                ));
        }catch (PDOException $e){
            die('<h1>Impossible de se connecter a la base de donnee</h1>');
        }
    }
    public function query($sql,$data = array()){
            $req=$this->db->prepare($sql);
            $req->execute($data);
        return $req->fetchAll(PDO::FETCH_OBJ);


    }

    public function exec($sql,$data = array()){
        $req=$this->db->prepare($sql);
        $req->execute($data);
    }

}
?>

Re: Urgent !!!! merci d'intervenir parce que je me suis bloqué.

Posté : 30 août 2015, 15:09
par @rthur
Modération :
Tes délais ne nous intéressent pas.
Nous savons que tu es en difficulté puisque tu demandes de l'aide,
mais nous sommes tous bénévoles et répondons selon nos disponibilités.

Par ailleurs, afin d'obtenir une aide efficace et de faciliter la lecture du forum, merci d'utiliser un titre clair décrivant de façon précise le problème rencontré.

Re: Merci d'intervenir, j'arrive pas a trouver une solution pour Warning: PDOStatement::execute(): SQLSTATE[4200]

Posté : 30 août 2015, 17:24
par Vince32
Salut,

quand on analyse ton code, on remarque que le problème est toujours au niveau de $id_client

Je pense que cette variable ne contient rien dans ton script. Pour vérifier, fais
echo $id_client
avant tes requêtes.

vérifie qu'il ait bien été attribué une valeur à $_SESSION['id_client'].

si tu change ton code comme suit :
$id_client=$_SESSION['id_client'];
$test=$DB->exec("INSERT INTO commande(`id_client`,`id_status`) VALUES('".$id_client,2."')");
$comd=$DB->query("select id_comm from commande where id_client=' ".$id_client."' AND ((CURRENT_TIMESTAMP - date_cmd)<1000)");
je suis sûr que tes erreurs disparaitront.