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 :

Exécution d'un fichier SQL


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Exécution d'un fichier SQL
    Bonjour,

    Souhaitant créer un module d'installation quasi automatisé, je me trouve bloqué lors de l'exécution d'un bout de code.

    J'ai sans cesse l'erreur :
    Instruction 0 : 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 '***

    *** correspondant à la première ligne de mon fichier sql.

    Je sais que mysql n'est censé gérer qu'une instruction à la fois, toutefois via le code ci-dessous, normalement, je devrais pouvoir exécuter toutes les créations/injections contenues dans le fichier sql ... non ?

    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
     
    	include("../_connex.php"); //données de connexion.
    	$filename = "../sql/servers.sql"; //fichier à importer
    	$file = fopen($filename, "r"); //ouverture en mode lecture
    	$sql = fread($file, filesize($filename)); //vérification de la taille du fichier
    	fclose($file);	
    	$inst = explode(";", $sql); 
    	$n = count($inst); //nombre d'instructions à réaliser
    		for($i=0;$i<$n;$i++){ // limitation de la boucle
    			if(trim($inst[$i])!=""){
    				echo "Instruction $i : ";
    				mysql_query($inst[$i]) or die(mysql_error()); //execution des requetes présentes dans le fichier
    				echo "OK.<br>";
    			}
    		}
    	mysql_close(); //fermeture de la connexion
    Je précise que le contenu du fichier sql est opérationnel lorsque j'emploie phpmyadmin pour faire un import.

    Une idée ?

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    Salut,
    tu t'es jamais dis, tiens si je faisais echo $inst[$i] au lieu d'un mysql_query histoire de voir si le découpage de mon fichier est bon? car pour moi, il doit manquer le ; de fin de requête mais ce n'est qu'une spéculation.
    Tien nous au courant.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    De mon côté j'avais déjà suspecté un soucis au niveau du code, j'avais, réalisé un écho de quasiment toutes les variables... ne rencontrant aucune problématique.

    Dans les faits, en réalisant un echo $inst[$i];, j'obtiens le retour ci-dessous :

    Instruction 0 : CREATE TABLE IF NOT EXISTS `tbl_server` ( `s_id` int(255) NOT NULL AUTO_INCREMENT, `s_world` varchar(2) NOT NULL, `s_realm` varchar(48) NOT NULL, `s_type` varchar(8) NOT NULL, `s_lang` varchar(2) NOT NULL, PRIMARY KEY (`s_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=158 OK.

    Suivi naturellement de l'instruction 1, laquelle contient tous les INSERT.

    Donc effectivement, le ";" séparant les deux instructions n'est pas apparant... l'explode a dû le retirer.

    Suggestion ?

Discussions similaires

  1. exécution d' un fichier sql
    Par azstar dans le forum C#
    Réponses: 4
    Dernier message: 26/12/2010, 10h10
  2. Commande d'exécution d'un fichier sql
    Par fichiertempo dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/07/2007, 09h55
  3. Exécution d'un fichier *.sql via un job
    Par Philoulheinz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/07/2007, 22h47
  4. Exécution d'un fichier SQL dans un fichier JSP
    Par Tyrael62 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/07/2007, 17h29
  5. Exécuter un fichier .sql
    Par joul's dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/02/2005, 12h18

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