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

PHP & Base de données Discussion :

Erreur incompréhensible : 'SQLSTATE[42000]: Syntax error or access violation: 1064' [PDO]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Erreur incompréhensible : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Bonjour à tous,

    Voilà, je me tire les cheveux depuis 2 jours sur un problème d'insertion en table.
    Ci-dessous, deux fonctions: l'une marche, l'autre pas...
    Je n'ai pas d'erreur PHP en logs.
    errorInfo renvoie pour chacune : Array([0]=>00000)

    (Maj. J'ai mis ensuite le code erreur PDO... Je dois avoir un truc dans les yeux, c'est possible!)

    insertAnswer() fonctionne, insertQuestion() non. Et je ne comprends pas...
    Si ça se trouve il y a un truc gros comme un camion sous mes yeux trop las.

    D'avance merci !

    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
     
    function insertAnswer() {
     
    	$dbh = DBHandler::getInstance();
     
    	$user			= 1;
    	$current_question	= 2;
    	$question		= 2;
    	$date			= date("Y-m-d H:m:s");;
    	$period			= 'xxxx';
    	$answer			= 'toto';
     
    	$sql = "INSERT INTO vto_answers (user_id, question_id, date, period, answer) VALUES ( :user_id, :question_id, :date, :period, :answer)";
    	$stmt = $dbh->prepare($sql);
     
    	$stmt->execute(array(':user_id'=>$user, ':question_id'=>$question, ':date'=>$date, ':period'=>$period, ':answer'=>$answer));
     
    	print_r($dbh->errorInfo());
     
    	DBHandler::closeConnection();
     
    }
     
    function insertQuestion() {
     
    	$dbh = DBHandler::getInstance();
     
    	$order		= 1;
    	$label		= 'toto';
    	$type		= 'SingleLineText';
    	$meta		= 'test';
    	$group_id 	= 1;
     
    	$sql = "INSERT INTO vto_questions (order, label, type, meta, group_id) VALUES (:order, :label, :type, :meta, :group_id)";
    	$stmt = $dbh->prepare($sql);
     
    	$stmt->execute(array(':order'=>$order, ':label'=>$label, ':type'=>$type, ':meta'=>$meta, ':group_id'=>$group_id));
     
    	print_r($dbh->errorInfo());
     
    	DBHandler::closeConnection();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PHP Fatal error:  Uncaught exception 'PDOException' with message '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 'order, label, type, meta, group_id) VALUES ('1', 'toto', 'SingleLineText', 'test' at line 1' in ~/htdocs/temp.php:39
    Stack trace:
    #0 ~/htdocs/temp.php(39): PDOStatement->execute(Array)
    #1 ~/htdocs/temp.php(46): insertQuestion()
    #2 {main}
      thrown in ~/htdocs/temp.php on line 39

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ORDER est un mot reservé il ne faut pas appeller tes champs comme ca.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci Sabotage de ta réponse...
    J'y effectivement pensé (j'avais même un champ appelé 'values'...)!

    J'ai renommé mon champ, sans succès.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quelle est l'erreur maintenant ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oups! Au temps pour moi...
    Avec 'num_order' ma requête fonctionne!

    Génial, merci!

    En fait je remarque qu'avec des quotes pour la requête, ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = 'INSERT INTO `vto_questions` (`id`, `order`, `label`, `type`, `meta`, `group_id`) VALUES (NULL, \'1\', \'toto\', \'SingleLineText\', \'test\', \'1\');';

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ba oui puisque comme je te l'ai dit ORDER ne doit pas etre utilisé comme nom de champ.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] SQLSTATE[42000]: Syntax error or access violation: 1064
    Par martin30200 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/11/2014, 11h45
  2. Réponses: 2
    Dernier message: 12/05/2014, 16h32
  3. [PDO] Erreur louche : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par oliopur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/03/2012, 17h10
  4. [MySQL] Erreur SQL : SQLSTATE[42000]: Syntax error or access violation: 1064
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2011, 16h13
  5. [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

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