PHP: create database et tables dans un seul script

Fermé
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 6 sept. 2013 à 23:21
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 - 6 sept. 2013 à 23:40
Bonsoir tout le monde !!

voila j'ai un script php dont le but est de créer une base ainsi que ses tables. jusqu'ici tout va bien.
Le problème c'est qu'à la première exécution le script me crée la base mais pas les tables...
Il faut que j'exécute le script une seconde fois pour que les tables soient créées... vous en conviendrez, pas super jojo

je vous post le code:

Le code comme je l'ai pensé:
$cnx      	  		= mysql_connect($serveur, $login, $password) or die("cnx error");

$creationUser = "GRANT ALL PRIVILEGES ON $base.* to '$user'@'$serveur' identified by '$pass';";
$creationBase = "CREATE DATABASE $base;";
mysql_select_db($base);
$creationTableAdmin = "CREATE TABLE admin(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, admin_user VARCHAR(25) NOT NULL UNIQUE, admin_pass VARCHAR(25) NOT NULL);";
$creationTableNet = "CREATE TABLE network(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, ip_admin VARCHAR(15) NOT NULL, net_admin VARCHAR(15) NOT NULL, mask_net_admin VARCHAR(15) NOT NULL, ip_ad VARCHAR(15) NOT NULL, net_ad VARCHAR(15) NOT NULL, mask_net_ad VARCHAR(15) NOT NULL);";
mysql_query($creationBase);
mysql_query($creationUser);
mysql_query($creationTableAdmin);
mysql_query($creationTableNet);
mysql_close($cnx);

Le code repensé:
$cnx1      	  		= mysql_connect($serveur, $login, $password) or die("cnx error");

$creationUser = "GRANT ALL PRIVILEGES ON $base.* to '$user'@'$serveur' identified by '$pass';";
$creationBase = "CREATE DATABASE $base;";
mysql_close($cnx1);
$cnx2 = mysql_connect($serveur, $login, $password) or die("cnx error");
mysql_select_db($base);
$creationTableAdmin = "CREATE TABLE admin(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, admin_user VARCHAR(25) NOT NULL UNIQUE, admin_pass VARCHAR(25) NOT NULL);";
$creationTableNet = "CREATE TABLE network(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, ip_admin VARCHAR(15) NOT NULL, net_admin VARCHAR(15) NOT NULL, mask_net_admin VARCHAR(15) NOT NULL, ip_ad VARCHAR(15) NOT NULL, net_ad VARCHAR(15) NOT NULL, mask_net_ad VARCHAR(15) NOT NULL);";
mysql_query($creationBase);
mysql_query($creationUser);
mysql_query($creationTableAdmin);
mysql_query($creationTableNet);
mysql_close($cnx2);
J'ai pensé que tout ne pouvait pas se faire dans une seule connexion (ce qui metonnerais bien) donc je la close et j'en recré une avec la creation des tables...

Le code je ne sais plus quoi faire:
$cnx1      	  		= mysql_connect($serveur, $login, $password) or die("cnx error");

$creationUser = "GRANT ALL PRIVILEGES ON $base.* to '$user'@'$serveur' identified by '$pass';";
$creationBase = "CREATE DATABASE $base;";
mysql_close($cnx1);
sleep(5);
$cnx2 = mysql_connect($serveur, $login, $password) or die("cnx error");
mysql_select_db($base);
$creationTableAdmin = "CREATE TABLE admin(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, admin_user VARCHAR(25) NOT NULL UNIQUE, admin_pass VARCHAR(25) NOT NULL);";
echo "coucou";
$creationTableNet = "CREATE TABLE network(id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, ip_admin VARCHAR(15) NOT NULL, net_admin VARCHAR(15) NOT NULL, mask_net_admin VARCHAR(15) NOT NULL, ip_ad VARCHAR(15) NOT NULL, net_ad VARCHAR(15) NOT NULL, mask_net_ad VARCHAR(15) NOT NULL);";
mysql_query($creationBase);
mysql_query($creationUser);
mysql_query($creationTableAdmin);
mysql_query($creationTableNet);
mysql_close($cnx2);
Je me suis dit que la cnx1 n'avait peut être pas le temps de bien se fermer ^^ alors je l'aide un peut avec un sleep(5) avant de continuer...

Donc aucun des ces trois codes ne fonctionne. Je n'ai pas envie de faire appelle à d'autres fichier je voudrais tout dans le même script.
Et pas la peine de mentir, je sais que c'est possible !! ^^

Si quelquun à une idée du pourquoi du comment parce que je ne vois pas trop.

Merci d'avance
A voir également:

2 réponses

astuces72 Messages postés 7721 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 10 avril 2024 1 637
6 sept. 2013 à 23:33
hello

je ne vais pas répondre directement à ta question
je vais te proposer d'utiliser une sauvegarde gzip que tu auras fais, et ensuite tu fais une restauration gzip également.

tu as un exemple ici:
https://www.wordetweb.com/word-et-web/OVH-Sauvegarder-Restaurer-une-base-de-donnees-via-un-script-FR.htm

je te dis ça sans savoir ce que tu veux faire exactement :)
0
LezardMoo Messages postés 554 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 21 janvier 2015 14
6 sept. 2013 à 23:40
Merci ^^

Jy avais pensé, pas avec gzip mais avec un fichier sql (ceci dit c'est la meme chose)

Je voulais garder mes requetes dans mon scrit histoire de toujours les voir et pouvoir les modifiers facilement.

Je vais donc continuer à chercher et si je ne trouve pas c'est ta solution que j'utiliserais.
0