IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 38
    Par défaut Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe
    Bonjour.
    Depuis 3 jours, j'ai une erreur que je n'arrive pas à comprendre. Pas à résoudre avec les ressources que j'ai pu trouver sur le sujet
    L'erreur qui s'affiche à l'ecran est la suivante : Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de ')' à la ligne 1 in C:\wamp64\www\PrTz\db.class.php on line 39


    L'erreur semble venir du fichier qui se nomme panier.php et semble venir de mon implode.Ligne 21.
    Je vais donc afficher mon code panier.php puis dans un second temps mon fichier db.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php require "header.php";?>
    <?php var_dump($_SESSION);?>
    <div class="checkout*">
    <div class="tittle">
    <div class="wrap*">
    <h2 class="first">Shpping Carts</h2>
    <a href="#*" class="proceed"> Proceed to Checkout</a> </div> </div>
     
    <div class="table">
    <div class="wrap">
    <div class="rowtittle">
     
    <span class="name">Product name</span>
    <span class="price">Price</span>
    <span class="Quantity">Quantity</span>
    <span class="Subtotal">Subtotal</span>
    <span class="action">Action</span>
     
    <?php
    $ids= array_keys($_SESSION['panier']);
    $products= $DB->query('SELECT * FROM products WHERE id IN (' .implode(',',$ids). ')');
    var_dump($products); 
    ?>
     
    <div class='row '>
    <a href="#*" class="img"><img src="img/imgin.png"></a>
    <span class="name"> Curubitus nomus del warus</span>
    <span class="price">  1320.09</span>
    <span class="quantity">1</span>
    <span class="Subtotal"> 1320.09</span>
    <span class="action">
    <a href='#' class="del"><img src="img/del.png"></a>
    </span>
    </div>
    <div class='row grey'>
    <a href="#" class="img"*><img src="img/imgin.png"></a>
    <span class="name"> Curubitus nomus del warus</span>
    <span class="price">1320.09<span>
    <span class="quantity">1</span>
    <span class="Subtotal"> 1320.09</span>
    <span class="action">
    <a href='#' class="del"><img src="img/del.png"></a>
    </span>
    </div>
     
    <div class="rowtotal">
    Grand Total*: <span class="total">2640.18 </span>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
     
    <?php require "footer.php"; ?>


    Le fichier db.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
    class DB{
    	private $host='localhost';
    	private $username='root';
    	private $password='';
    	private $database='tuto';
    	private $db;
     
    	public function __construct ($host=null,$username=null,$password=null,$database=null){
    		if($host!=null){
    			$this->host= $localhost;
    			$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 à la base de donnée</h1>');
    }
     
     
     
    	}
     
     
    public function query($sql,$data=array()){
    $reg= $this->db->prepare($sql);
    $reg->execute($data);
    return $reg->fetchAll(PDO:: FETCH_OBJ);
     
    } }


    Merci d'avance pour vos réponses et suggestion.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 348
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 348
    Billets dans le blog
    17
    Par défaut
    Vérifie que ta requête est correctement construite en l'affichant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ids= array_keys($_SESSION['panier']);
    $sql = 'SELECT * FROM products WHERE id IN (' .implode(',',$ids). ')';
    echo "[DEBUG SQL=$sql]";
    $products= $DB->query($sql);
    var_dump($products);
    Au niveau de ta méthode DB::query() il faudrait également faire un errorInfo() du même style qu'au moment de ta connexion.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 38
    Par défaut
    Merci beaucoup Seb pour ta réponse.
    La maniere dont je devrais voir les choses me semble plus claire.
    Merci encore.

Discussions similaires

  1. [MySQL] Syntax error or access violation: 1064 Erreur de syntaxe
    Par Zaimone dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/02/2018, 14h33
  2. Réponses: 2
    Dernier message: 23/10/2017, 23h04
  3. SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe
    Par the_programmeur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/08/2016, 14h01
  4. [MySQL] [MySQL] SQLSTATE[42000]: Syntax error or access violation: 1064
    Par Domotik35 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/07/2011, 16h42
  5. [PDO] Erreur incompréhensible : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par cyril_k dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/12/2008, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo