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, refuse de m'inserer element dans table nouvellement créée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Debutant
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Debutant

    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Par défaut erreur SQL, refuse de m'inserer element dans table nouvellement créée
    Bonsoir

    Alors je seche completement j'ai essaye tout ce qui etait en mon pouvoir mais voila...

    J'ai un formulaire en amont pour entrer le nom du nouveau projet, le logo, et 3 categories de ce projet, tout marche, meme la creation des tables mais ca beug pour enregistrer ces 3categories dans la nouvelle table cree a cet effet

    voici lerreur que ca me renvoie :

    Erreur : 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 '-categories (categ1, categ2, categ3) VALUES('hgj', 'jfdfdghj', 'fdj')' at line 1

    Les values etant les valeurs que j'ai mis pour testes ma table

    Voici le code:

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    	if(isset($_POST['lenom']))
    	{
    		try
    		{
     
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$bdd = new PDO('mysql:host=**;dbname=**', '**', '**', $pdo_options);
     
    			$req = $bdd->exec('CREATE TABLE if not exists `'.$lenom.'` (
    					`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    					`article` TEXT NOT NULL ,
    					`categorie` VARCHAR( 50 ) NOT NULL ,
    					`date` VARCHAR( 50 ) NOT NULL
    					)');
     
    			echo '<h2>La table '.$lenom.' a bien été créée.</h2>';
     
    			$req2 = $bdd->exec('CREATE TABLE if not exists `'.$lenom.'-produits` (
    					`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    					`article` TEXT NOT NULL ,
    					`titre` VARCHAR( 50 ) NOT NULL ,
    					`categorie` VARCHAR( 50 ) NOT NULL ,
    					`date` VARCHAR( 50 ) NOT NULL 
    					)');
     
    			echo '<h2>La table "produits" a bien été créée.</h2>';
     
    			$req3 = $bdd->exec('CREATE TABLE if not exists `'.$lenom.'-categories` (
    					`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    					`categ1` VARCHAR( 50 ) ,
    					`categ2` VARCHAR( 50 ) ,
    					`categ3` VARCHAR( 50 )
    					)');
     
    			echo '<h2>La table "categories" a bien été créée.</h2>';
     
    			$req4 = $bdd->prepare('INSERT INTO '.$lenom.'-categories (categ1, categ2, categ3) VALUES(:cat1, :cat2, :cat3)');
    			$req4->execute(array(
    				'cat1'=> $_POST['cat1'],
    				'cat2'=> $_POST['cat2'],
    				'cat3'=> $_POST['cat3'],
    				));	
    			echo '<h2>Les categories ont bien été enregistrées</h2>';
     
    		}
     
    		catch(Exception $e)
    		{
    			die('Erreur : '.$e->getMessage());
    		}
     
     
    	}
    Une question : mais pourquoi??????????????????? qu'est-ce que j'ai fait de mal !!!

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `'.$lenom.'-categories`


    PS: c'est moche l'utilisation de $lenom alors qu'il provient de $_POST.
    Il manque un : $lenom = $_POST['lenom'];

  3. #3
    Membre averti
    Homme Profil pro
    Debutant
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Debutant

    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Par défaut
    En fait j'ai fini par trouver tout seul, c'était le tirait qui m'a provoquer cette erreur sql, donc apparemment on peut pas nommer une table avec un tirait, pcq en remplaçant par un underscore l'erreur a disparu.

    merci quand meme, en fait la variable est bien ecrite dans mon code mais plus haut c'est tout

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/02/2014, 11h29
  2. Inserer enreg dans table
    Par nico_1 dans le forum MkFramework
    Réponses: 2
    Dernier message: 20/11/2013, 14h16
  3. [SQL Oracle9i] Ligne d'une table nouvellement crée
    Par shaun_the_sheep dans le forum SQL
    Réponses: 2
    Dernier message: 10/10/2007, 10h51
  4. inserer element dans une liste
    Par hunter99 dans le forum C
    Réponses: 10
    Dernier message: 05/12/2006, 22h40
  5. Inserer des elements dans une map sans rangement ?
    Par Muetdhiver dans le forum C++
    Réponses: 3
    Dernier message: 07/09/2004, 11h09

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