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 SQL incompréhensible [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut Erreur SQL incompréhensible
    Bonjour à tous,
    Je travaille en local à l'aide de XAMPP (apache 2.2.14, MySQL 5.1.44, PHP 5.3.1). J'ai une erreur SQL que je n'arrive pas à débugger :

    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 '' at line 1

    Le SQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ita_logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '127.0.0.1', '2011-05-28 21:01:02', 1, 9)

    Le PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $now = date('Y-m-d H:i:s');
    $isql="INSERT INTO `".PREFIX.'logs'."` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";
    $iquery = mysql_query($isql) or die(mysql_error());
    La table MySQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `ita_logs` (
      `logid` int(11) NOT NULL AUTO_INCREMENT,
      `ips` varchar(15) NOT NULL,
      `ldate` datetime NOT NULL,
      `logcount` int(2) NOT NULL,
      `userid` int(11) NOT NULL,
      PRIMARY KEY (`logid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

    La requête fonctionne avec ça, elle ajoute bien un enregistrement à la table mais l'erreur bloque l'affichage de la page.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 28
    Par défaut Bonsoir
    Slt,
    Qu'as tu dans ton php après ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut
    Salut m51_2000,

    J'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($iquery==true)
    {
    	return array(true, $logid);
    }
    Le return est là parce que ça fait partie d'une fonction.

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,
    Je pense que tu t'est emmelé les pinceaux entre les quotes et les doubles quotes apres le PREFIX, essaye ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $isql="INSERT INTO `".PREFIX."'logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut
    Salut amoiraud,

    C'est vrai que ce serait même plus propre comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $isql="INSERT INTO `".PREFIX."logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '$ip', '$now', 1, 0)";
    Mais même quand je mets le nom de la table (`ita_logs`) ça produit la même erreur. Je suis sûr que c'est un truc bête mais je n'arrive pas à savoir quoi. D'autant que c'est Mysql qui râle ici alors que la requête exécuter directement par bash passe parfaitement ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut
    J'ai trouvé à 4h20 du matin, mais j'ai débuggé toute la classe ...
    Pour la petite histoire :

    La requête est bonne et il n'y a pas de plantage côté MySQL comme avec les premier package 5.1.33. et le format MyISAM.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ita_logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '127.0.0.1', '2011-05-28 21:01:02', 1, 9)
    Le PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $isql="INSERT INTO `".PREFIX."logs` (`logid`, `ips`, `ldate`, `logcount`, `userid`) VALUES(0, '".$ip."', NOW(), 1, 0)";
    $iquery = mysql_query($isql) or die(mysql_error());
    if($iquery==true)
    {
    	return array(true, 0);
    }
    Le problème venait de ce qui j'ai mis en rouge ; je retourne un tableau dont la seconde variable ($logid) était vide (maintenant remplacer par zéro). Or par défaut pour un format INT c'est zéro et non un espace vide. Bref ça n'explique pas pourquoi c'est MySQL qui râle dans ce cas puisque la requête est correcte
    Merci à tous pour m'avoir porter attention

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

Discussions similaires

  1. [sqlwindows] erreur sql
    Par chassonj dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 15/12/2003, 11h02
  2. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06
  3. Erreurs SQL Server
    Par ZuZu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2003, 16h23
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. erreur sql loader et performance
    Par mobisky dans le forum SQL*Loader
    Réponses: 14
    Dernier message: 20/08/2003, 12h27

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