Variable PHP dans requete MySQL

Résolu
guyom11 Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 5 mai 2009 - 5 mai 2009 à 12:02
guyom11 Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 5 mai 2009 - 5 mai 2009 à 15:14
Bonjour à tous,

Je suis confronté à un petit problème dans le cas où j'essaye de créer une table avec une variable PHP dont la valeur contient un espace ou un caractère du type "-". Par contre, si je passe le nom directement dans la requête MySQL il n'y a pas de souci. Avec le code c'est plus simple :

        echo $data['Name'];  
        echo '
';

        // creation de la base
        $query = "CREATE TABLE ".$data['Name']."(
            `version` VARCHAR( 15 ) NOT NULL,
            `type` VARCHAR( 1 ) NOT NULL,
            PRIMARY KEY (`version`)
        ) ENGINE = MYISAM";
 
        if(!($result=mysql_query($query)))
        {       
            die(mysql_error());
        }

ce qui donne la sortie suivante :

Jet-Audio
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 '-Audio ( `version` VARCHAR( 15 ) NOT NULL, `type` VARCHAR( 1 )
NOT NULL,' at line 1

On voit bien qu'il y arrive pas avec le contenu de la variable vu qu'il affiche -Audio et non pas Jet-Audio. Bref et si je passe directement Jet-Audio dans la requête MySQL il n'y a pas de problème et tout fonctionne bien.

J'aimerais juste savoir comment corriger ce petit problème, si vous avez des idées je suis preneur.

Merci

2 réponses

alexflex25 Messages postés 106 Date d'inscription vendredi 29 septembre 2006 Statut Membre Dernière intervention 6 mars 2012
5 mai 2009 à 14:11
ATTENTION! c'est très très exigent:
Pour reprendre ton exemple:

$query = "CREATE TABLE `".$data['Name']."`(
            `version` VARCHAR( 15 ) NOT NULL,
            `type` VARCHAR( 1 ) NOT NULL,
            PRIMARY KEY (`version`)
        ) ENGINE = MYISAM";
il faut ajouter des  ` (`Alt Gr + 7`) (c'est pas des ' (4) ni des " (3) mais des ` (Alt Gr + 7) ) quand tu spécifies le nom de ta table.
Il serait préférable de spécifier le nom du schéma avant le nom de la table mais c'est un détail.
Voila.
3
guyom11 Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 15:14
Bonjour alexflex25,

Merci pour ta réponse rapide, ça marche impec maintenant.
0