Bug #13169 Phpmyadmin bug on syntax analize
Submitted: 14 Sep 2005 7:44 Modified: 14 Sep 2005 8:05
Reporter: Patrick DOURET Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version: OS:Microsoft Windows (Windows 2000 Professionnal)
Assigned to: CPU Architecture:Any

[14 Sep 2005 7:44] Patrick DOURET
Description:
The following request 
"INSERT INTO `colonnes_excel` ( `ID_THEME` , `LIBELLE` , `CLASSE_OBJET_CIBLE` , `NOM_ATTRIBUT_CIBLE` , `NOM_METHODE_CIBLE` , `ORDRE` , `FORMAT` , `HIDDEN` , `VALEUR` , `COMMENTAIRE` , `MULTIVALUE` , `SEPARATEUR` , `TYPE_INDICATEUR` ) VALUES ('CARACT_SEC_APPLI', 'Direction responsable du coût d'une application', 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0', NULL , '0', NULL , 'Direction responsable du coût d'une application', 'N', NULL , 'APP_ORG_COUT');"
which contains syntax error arround caracter like "'" in strings produces a crash of phpmyadmin.

I get the following error message:

Erreur

Il semble que vous ayiez trouvé une anomalie dans l'analyseur syntaxique SQL. Veuillez examiner votre requête attentivement, et vérifier que vos apostrophes sont conformes. Il se pourrait aussi que vous ayiez chargé un fichier dont le contenu binaire n'est pas entre apostrophes. Si vous avez accès à MySQL via son interface de commande en mode ligne, vous pouvez y essayer votre requête. Le message d'erreur présenté plus bas pourrait vous indiquer la source du problème. En dernier recours, veuillez trouver la plus courte requête possible qui cause le problème, et soumettre un rapport d'anomalie en incluant la section à couper:
----Début de la section à couper----
eNqdT8FymzAUvPMV75AZJzNAwI5jh5sMqq2OkKgkyPSEsa2mdChQsDPut+dSgd2ZTI456Gl33763
EhaCiwBCH8IpUMwCePAW5izhYb6wpDK9N8sKMxnADTkE0P+p2qLrdedW5c5tf7b2K/jucgFTz5vd
e8t7fwb+Y+DNA9+DuvylK8DnFm6s+K/8Rs1213P9ufO7ODsHvTu9WKkUwKUNaI2ZsiHDJvG5rIFg
eHQ9K4lRAFN37s6sZJMMbZvLYc3MncEzYUxZFLF1AD86p+wbZ7mcPzm+NWYRJrFQ5lIctvumaupa
97k+73W1hVvYkihXGxzjLdiwpWSFKb3gkCIpcc5XX7HKQ7K6yozHOVJKkFX6UY6x2vAIv1O5iMQF
feEiRmqEGxJFmI0wQxSn4hLH49h8HpHrQJxSRUw/vVCJEySQ+u9W3xOcExaR8KrdweiVcDsJjTFU
ucRhjpKEkokNk6js9P5YNjV0um+bui92lYbDCfbN2xEOk1OtoWjbqtwXg2sYIfVhYPrUDey16oyQ
FdWVv+hjNkoD8UxhKaXwAX8ilb0bN6/PuVjnIU/V5O4frf3Bsg==
----Fin de la section à couper----
----Début des informations sur l'anomalie----

ERROR: C1 C2 LEN: 407 408 457
STR: û

CVS: $Id: sqlparser.lib.php,v 1.87 2003/08/13 16:05:10 nijel Exp $
MySQL: 4.0.15-max-debug
USR OS, AGENT, VER: Win IE 6.0
PMA: 2.5.3
PHP VER,OS: 4.3.3 WINNT
LANG: fr-iso-8859-1
SQL: INSERT INTO `colonnes_excel` ( `ID_THEME` , `LIBELLE` , `CLASSE_OBJET_CIBLE` , `NOM_ATTRIBUT_CIBLE` , `NOM_METHODE_CIBLE` , `ORDRE` , `FORMAT` , `HIDDEN` , `VALEUR` , `COMMENTAIRE` , `MULTIVALUE` , `SEPARATEUR` , `TYPE_INDICATEUR` ) VALUES ('CARACT_SEC_APPLI', 'Direction responsable du coût d'une application', 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0', NULL , '0', NULL , 'Direction responsable du coût d'une application', 'N', NULL , 'APP_ORG_COUT')----Fin des informations sur l'anomalie----

requête SQL :  

INSERT INTO `colonnes_excel` ( `ID_THEME` , `LIBELLE` , `CLASSE_OBJET_CIBLE` , `NOM_ATTRIBUT_CIBLE` , `NOM_METHODE_CIBLE` , `ORDRE` , `FORMAT` , `HIDDEN` , `VALEUR` , `COMMENTAIRE` , `MULTIVALUE` , `SEPARATEUR` , `TYPE_INDICATEUR` ) VALUES ('CARACT_SEC_APPLI', 'Direction responsable du coût d'une application', 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0', NULL , '0', NULL , 'Direction responsable du coût d'une application', 'N', NULL , 'APP_ORG_COUT') 

MySQL a répondu:

#1064 - Erreur de syntaxe près de 'une application', 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0'' à la ligne 1

How to repeat:
1) Create a table with the followin script

CREATE TABLE `colonnes_excel` (
  `ID_COLONNE` int(10) NOT NULL auto_increment,
  `ID_THEME` varchar(50) NOT NULL default '',
  `LIBELLE` varchar(100) NOT NULL default '',
  `CLASSE_OBJET_CIBLE` varchar(20) default NULL,
  `NOM_ATTRIBUT_CIBLE` varchar(20) default NULL,
  `NOM_METHODE_CIBLE` varchar(50) default NULL,
  `ORDRE` int(10) unsigned NOT NULL default '0',
  `FORMAT` varchar(20) default NULL,
  `HIDDEN` tinyint(1) NOT NULL default '0',
  `VALEUR` varchar(20) default NULL,
  `COMMENTAIRE` varchar(200) default NULL,
  `MULTIVALUE` char(1) NOT NULL default 'N',
  `SEPARATEUR` char(1) default NULL,
  `TYPE_INDICATEUR` varchar(50) default NULL,
  PRIMARY KEY  (`ID_COLONNE`,`ID_THEME`)
) TYPE=MyISAM AUTO_INCREMENT=52 ;

2) Run the request:

INSERT INTO `colonnes_excel` ( `ID_THEME` , `LIBELLE` , `CLASSE_OBJET_CIBLE` , `NOM_ATTRIBUT_CIBLE` , `NOM_METHODE_CIBLE` , `ORDRE` , `FORMAT` , `HIDDEN` , `VALEUR` , `COMMENTAIRE` , `MULTIVALUE` , `SEPARATEUR` , `TYPE_INDICATEUR` ) VALUES ('CARACT_SEC_APPLI', 'Direction responsable du coût d'une application', 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0', NULL , '0', NULL , 'Direction responsable du coût d'une application', 'N', NULL , 'APP_ORG_COUT');
[14 Sep 2005 8:05] Valeriy Kravchuk
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.mysql.com/documentation/ and the instructions on
how to report a bug at http://bugs.mysql.com/how-to-report.php

Additional info:

It has nothing to do with phpmyadmin, by the way. The problem is: how to pass single quote character (') inside a single quoted string. The solution is well-known - just use two of them (''):

mysql> CREATE TABLE `colonnes_excel` (
    ->   `ID_COLONNE` int(10) NOT NULL auto_increment,
    ->   `ID_THEME` varchar(50) NOT NULL default '',
    ->   `LIBELLE` varchar(100) NOT NULL default '',
    ->   `CLASSE_OBJET_CIBLE` varchar(20) default NULL,
    ->   `NOM_ATTRIBUT_CIBLE` varchar(20) default NULL,
    ->   `NOM_METHODE_CIBLE` varchar(50) default NULL,
    ->   `ORDRE` int(10) unsigned NOT NULL default '0',
    ->   `FORMAT` varchar(20) default NULL,
    ->   `HIDDEN` tinyint(1) NOT NULL default '0',
    ->   `VALEUR` varchar(20) default NULL,
    ->   `COMMENTAIRE` varchar(200) default NULL,
    ->   `MULTIVALUE` char(1) NOT NULL default 'N',
    ->   `SEPARATEUR` char(1) default NULL,
    ->   `TYPE_INDICATEUR` varchar(50) default NULL,
    ->   PRIMARY KEY  (`ID_COLONNE`,`ID_THEME`)
    -> ) TYPE=MyISAM AUTO_INCREMENT=52 ;
Query OK, 0 rows affected, 1 warning (0.06 sec)

mysql> INSERT INTO `colonnes_excel` ( `ID_THEME` , `LIBELLE` , `CLASSE_OBJET_CIBLE` ,
    -> `NOM_ATTRIBUT_CIBLE` , `NOM_METHODE_CIBLE` , `ORDRE` , `FORMAT` , `HIDDEN` ,
    -> `VALEUR` , `COMMENTAIRE` , `MULTIVALUE` , `SEPARATEUR` , `TYPE_INDICATEUR` )
    -> VALUES ('CARACT_SEC_APPLI', 'Direction responsable du cout d''une application',
    -> 'Indicateur', 'vlrIndValeur', 'getVlrInd', '0', NULL , '0', NULL ,
    -> 'Direction responsable du cout d''une application', 'N', NULL , 'APP_ORG_
COUT');
Query OK, 1 row affected (0.02 sec)

mysql> select * from colonnes_excel;
+------------+------------------+-----------------------------------------------
--+--------------------+--------------------+-------------------+-------+-------
-+--------+--------+-------------------------------------------------+----------
--+------------+-----------------+
| ID_COLONNE | ID_THEME         | LIBELLE
  | CLASSE_OBJET_CIBLE | NOM_ATTRIBUT_CIBLE | NOM_METHODE_CIBLE | ORDRE | FORMAT
 | HIDDEN | VALEUR | COMMENTAIRE                                     | MULTIVALU
E | SEPARATEUR | TYPE_INDICATEUR |
+------------+------------------+-----------------------------------------------
--+--------------------+--------------------+-------------------+-------+-------
-+--------+--------+-------------------------------------------------+----------
--+------------+-----------------+
|         52 | CARACT_SEC_APPLI | Direction responsable du cout d'une application | Indicateur         | vlrIndValeur       | getVlrInd         |     0 | NULL
 |      0 | NULL   | Direction responsable du cout d'une application | N
  | NULL       | APP_ORG_COUT    |
+------------+------------------+-----------------------------------------------
--+--------------------+--------------------+-------------------+-------+-------
-+--------+--------+-------------------------------------------------+----------
--+------------+-----------------+
1 row in set (0.00 sec)