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.

  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 ?

  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.

+ 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, 12h45
  2. Réponses: 2
    Dernier message: 12/05/2014, 17h32
  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, 18h10
  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, 17h13
  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, 17h42

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