Pb lecture fichier *.sql pour auto install

Signaler
Messages postés
27
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2004
-
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
-
Salut.

En fait, j'ai un petit probleme. j'aimerai automatisé l'installation du site que je suis entrain de faire. Et pour ça, j'ai créé un fichier table.sql avec toutes les créations de tables. Le seul problème, c'est comment est-ce que je fais piur executer le contenu de ce fichier a partir du page en PHP?? avec mysql_query, mais le probleme c que je n'arrive pas a executer mes requetes de creation, meme apres recuperation du contenu du fichier.
Alors? yaurai-t-il une façon de faire que je ne vois pas??

Merci d'avance
>:) Curator68 >:)
>>> http://www.pcwebmaker.com/

14 réponses

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Je suppose que les requetes de créations tiennent sur plusieurs lignes.... Tu est sur que la variable que tu passe à mysql_query est bonnne?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
27
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2004

oui, mes requetes de creation tiennent sur plusieurs lignes (d'ailleurs je crée plusieurs tables, mais j'ai testé avec une seule), et je suis sûr de passer la bonne variable, puisque pour debuguer, j'affiche son contenu.

Merci si vous avez des exemples. ou carément la solution!! :)

>:) Curator68 >:)
>>> http://curator.free.fr
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Tu peux faire:
mysql_query($query) or die(mysql_error())

Et nous donner l'erreur retournée ainsi que la valeur de $query...

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Si ton query n'accepte pas que tu lui passes multi-query, tu lis chaque ligne du fichier et tu execute ligne par ligne... c'est un exemple...

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
15
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
25 août 2004

Je suis dacc ac GRenard, j'avais eu le mm genre de pb et je l'avais resolu de cette facon...
++
Vince.
Messages postés
27
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2004

Voila le contenu de mon fichier *.sql:

CREATE TABLE IF NOT EXISTS utilisateurs(
id_utilisateur INT UNSIGNED NOT NULL AUTO_INCREMENT,
login VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL,
user_type VARCHAR(30) NOT NULL,
email VARCHAR(40),
date_enreg DATE NOT NULL,
PRIMARY KEY(id_utilisateur)
);
CREATE TABLE IF NOT EXISTS editorial(
edito TEXT
);
CREATE TABLE IF NOT EXISTS nbvisiteurs(
compteur double DEFAULT '0' NOT NULL,
date date DEFAULT '0000-00-00' NOT NULL,
time int(9) NOT NULL default '0',
duree int(9) NOT NULL default '0',
ip varchar(50) NOT NULL,PRIMARY KEY (ip),
KEY compteur (compteur, date),
KEY ip (ip)
);

Ensuite, j'ai essayé ce que coockiesch m'a dit d'essayé.
Et l'erreur qui m'est renvoyée est celle-ci:

Something is wrong in your syntax près de '; CREATE TABLE IF NOT EXISTS editorial( edito TEXT ); CREATE TA' à la ligne 9

merci d'avance
>:) Curator68 >:)
>>> http://curator.free.fr
Messages postés
15
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
25 août 2004

Kan g d soucis du genre, j'essaie requete par requete dans phpmyadmin. Tu devrais essayer voir si ca fonctionne une par une. Je pense que si tu les separe ca devrait fonctionner :p
++
Messages postés
27
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2004

ben voila, dans phpmyadmin, j'ai éxécuté chaque requete de creation a part, ça marche nickel. Ensuite j'ai essayé toutes ensembles, cad comme dans mon fichier, ça marche aussi. Alors je sais pas. quand je recupere ce qu'il y a dans mon fichier en PHP et que j'utilise mysql_query, ça marche pas... peut-être un caractère de fin de fichier ou kkchose???
ou bien mysql_query ne permet peut-être pas d'executer plusieurs requetes de creation en meme temps??
Si c'est le cas, qu'est-ce que je dois utiliser??

>:) Curator68 >:)
>>> http://curator.free.fr
Messages postés
15
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
25 août 2004

Dans ton cas, je lirai le fichier caractere par caractere et a chaque fois qu'il y a un ";" je stocke la requete et l'execute. Sinon faudrait essayer de voir si c pas un soucis de "\r\n" <- saut de ligne Win et "\n" saut de ligne d'unix. Peut etre essaie en supprimant tous les retour a la ligne?

++

Vince.
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
D'apres php.net :

Note : La requête ne doit pas être terminée par un point-virgule.


Attention en regardant à chaque ;. Si c'est ton fichier tu es au courant de ce qu'il y a dedans, mais si par exemple tu as un insert qui fait ceci
INSERT INTO table VALUE(';');
bah ca va planter avec ta fonction qui vérifie tes ;...
Alors le conseil que je te donne..., c'est que tu mets la création de tes tables sur UNE ligne ;)

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
15
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
25 août 2004

C pas bete! Heureusement que j'insere pas d ";" souvent lol :o)

Pas bete ton idée de ligne ... J'pense que c la solution la + adaptée :)
++
Vince.
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Perso, j'utilise ca :

function execute_query($sql,&$db){
$line = split(";",$sql);
for($i=0;$i<count($line);$i++)
$db->sql_query(trim($line[$i]));
}


$db->sql_query provient d'une belle classe que vous pouvez retrouver ici : http://www.phpcs.com/code.aspx?ID=24813

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
Messages postés
27
Date d'inscription
dimanche 9 mars 2003
Statut
Membre
Dernière intervention
2 septembre 2004

J'avais aussi deja essayé de les mettre sur une ligne. mais ça marchai pas non plus. j'aimerai bien ne pas utiliser de classe "exterieures" a celles de base.
Je suis sur que c'est un truc tout con... mais quoi??? :question)

>:) Curator >:)

http://www.pcwebmaker.com/
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Bah ce que j'ai écrit est très bien..., si tu ne veux pas utiliser la classe tu n'as qu'à aller voir en fait ce qu'elle fait... (elle fait simplement un mysql_query() ! )

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com