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 :

Importer un fichier SQL en PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Par défaut Importer un fichier SQL en PHP
    Bonjour,

    Je suis actuellement en train d'essayer de monter un CMS en PHP et la majorité des fonctions sont terminées. Cependant, j'ai un problème concernant l'installeur PHP que je suis en train de réaliser.
    En effet, j'ai souhaité faire un installeur qui permettrait d'importer les tables et leur contenu puis de créer un fichier de configuration automatiquement.

    Le problème intervient lorsque j'essaye d'exécuter mon fichier SQL via PHP pour créer l'arborescence dans MySQL. Je dispose d'un fichier .sql tout droit sorti d'une exportation depuis phpmyadmin.

    Mon script lit le contenu du fichier SQL puis l'exécute... le problème est qu'à chaque fois, ça provoque l'erreur précisée dans le dernier "else". Voici la partie du code incriminée:
    Code php : 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
    <?php
    // Connexion à la base de données
    mysql_connect($_SESSION['hote'], $_SESSION['nomutil'], $_SESSION['motpasse'])
      or die(mysql_error());
    mysql_select_db($_SESSION['nombdd'])
      or die(mysql_error());
     
    // Chargement des requètes SQL
    $sql = file_get_contents('mysql_schema.sql');
     
    // Envoi des requètes précédemment chargées
    if(mysql_query($sql))
    {
    	echo '<font color="#006600">Paramétrage terminé avec succès.</font>'."\r\n";
    	echo '</td>
    		</tr>
    	</table>
    	<table>
    		<tr>
    			<td><input type="submit" name="etape<?php echo $etape; ?>" value="<?php echo $texte_bouton; ?>" /></td>
    			<td>&nbsp;</td>
    		</tr>
    	</table>';
    }
    else
    {
    	echo '<font color="red">Le paramétrage a échoué... veuillez <a href="index.php">relancer l\'assistant</a>.</font><br />Si l\'erreur persiste, contactez cette erreur à Limber Web.'."\r\n";
    	echo '</td>
    		</tr>
    	</table>';
    }
    ?></p>
    Autrement dit, le script passe toujours dans le dernier "else" donc la requète ne s'exécute naturellement pas. J'ignore s'il y a un problème avec mon fichier SQL.
    Phpmyadmin fait-il un formatage incorrect qui ferait tout planter ?

    Merci d'avance pour tout éclairage sur mon problème.

    P.-S: J'ai vérifié, les sessions n'y sont pour rien, elles fonctionnent correctement.

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Il y a peut-être un problème de slashes, est-ce que tu as essayé d'afficher l'erreur sql ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    else
    {
    echo mysql_error();
    	echo '<font color="red">Le paramétrage a échoué... veuillez <a href="index.php">relancer l\'assistant</a>.</font><br />Si l\'erreur persiste, contactez cette erreur à Limber Web.'."\r\n";
    	echo '</td>
    		</tr>
    	</table>';
    }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Par défaut
    Voici le résultat de l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 '; INSERT INTO `lc_menus` (`IDMenu`, `IDGrandMenu`, `IDPage`, `NomMenu`, `Type' at line 11
    Il y a vraisemblablement un problème avec ce qu'a généré phpmyadmin. Voilà une partie du fichier SQL:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE IF NOT EXISTS `lc_menus` (
      `IDMenu` int(10) unsigned NOT NULL auto_increment,
      `IDGrandMenu` int(10) unsigned NOT NULL,
      `IDPage` int(10) unsigned NOT NULL,
      `NomMenu` varchar(100) collate latin1_general_ci NOT NULL,
      `TypeMenu` varchar(6) collate latin1_general_ci default NULL,
      PRIMARY KEY  (`IDMenu`),
      UNIQUE KEY `UK_Menus` (`NomMenu`),
      KEY `Menus_FKIndex1` (`IDPage`),
      KEY `lc_menus_FKIndex2` (`IDGrandMenu`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
     
    INSERT INTO `lc_menus` (`IDMenu`, `IDGrandMenu`, `IDPage`, `NomMenu`, `TypeMenu`) VALUES
    (1, 0, 1, 'Accueil', 'big');
    Je me demande si PHP ne râle pas à cause de ` manquants ou je ne sais pas quel autre caractère spécial.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Par défaut
    Bonjour,

    Finalement, en allant un peu me renseigner sur mysql_query(), j'ai remarqué que cette fonction ne prend pas en charge plusieurs requêtes SQL.
    Si on souhaite passer plusieurs requêtes, il faut faire plusieurs mysql_query()... ou une boucle pour être plus efficace.

    Donc voilà, sujet résolu et merci à Djakisback pour son aide

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

Discussions similaires

  1. [SQL] importer un fichier .sql par php
    Par adr22 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/09/2007, 13h34
  2. Je n'arrive pas à importer un fichier .sql
    Par ted-bis dans le forum Débuter
    Réponses: 6
    Dernier message: 03/01/2007, 07h28
  3. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15
  4. [SQL] Importer un fichier sql depuis PHP
    Par TNorth dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/05/2006, 18h39
  5. importation de fichiers SQL
    Par champijulie dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 20/05/2005, 15h50

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