Fichier sql

Eléphant du PHP | 158 Messages

02 mai 2006, 16:09

Bonjour a tous :)

Je travail en ce moment a la creation d'une interface web simplifiant l'utilisation d'une base de données.

Le systeme de gestion de base de données utilisés est phpmyadmin. Celui ci permet une fois une base créé d'executer un fichier .sql (dump) pour créer et remplir les tables.

J'aimerai savoir comment je peux faire en php pour charger de la meme facon ce fichier dump dans ma base.

A savoir:

- le serveur ou le code est hebergé est tourne sous unix


Merci d'avance
°°°Darkbibou°°°

Eléphant du PHP | 493 Messages

02 mai 2006, 16:44

En général un bon hébergeur te proposera une interface PHPMyAdmin, tu peux exécuter ton fichier à partir de là. Si tu tiens vraiment à l'exécuter via PHP, tu peux toujours récupérer son contenu et l'exécuter en bloc via mysql_query() ou mysqli_query(). Une troisième solution consiste à récupérer le contenu de ton fichier SQL et d'y effectuer quelques traitements prémilinaires (exemple ci-dessous), puis d'exécuter toutes les requêtes extraites les unes après les autres.
// Extraction
$queries = explode( ';', $sql_file_content );

// Methode 1: Exécution rapide !
array_map( 'mysql_query', $queries );

// Methode 2: Plus propre, plus lent
foreach ( $queries as $query )
{
    mysql_query( $query );
}

Eléphant du PHP | 158 Messages

03 mai 2006, 09:54

Merci pour ta reponse, je vais essayer :)

Par contre si je veux utiliser le bout de code que tu m'a donné il faut d'abord que je recup le contenu du fichier .sql dans une chaine avec un file_get_contents c'est ca ?

Faire le pretraitement que tu m'indique est t'il vraiment necessaire ? Ca va plus vite avec ?

Merci encore
°°°Darkbibou°°°

Eléphant du PHP | 493 Messages

03 mai 2006, 10:05

Oui, tu dois récupérer le contenu du fichier SQL via file_get_contents() par exemple. Je t'ai donné cette méthode car je ne suis pas sûr que mysql_query() accepte une requete aussi grande (ou un grande nombre de requetes) d'un coup !

Coté vitesse, tu t'en fiches un peu, tu n'as pas à le lancer à chaque affichage de pages. Je pense que le petit script que je t'ai montré alègerait le travail de MySQL.

Eléphant du PHP | 158 Messages

03 mai 2006, 10:18

Oki, merci beaucoup, ca marche parfaitement en local. Me reste plus qu'a mettre ca en place en ligne :D
°°°Darkbibou°°°

Eléphant du PHP | 493 Messages

03 mai 2006, 10:20

Par curiosité, tu as utilisé la méthode 1, 2 ou une autre pour l'exécution ?
EDIT: tu as utilisé mon pti script ou exécuté le fichier en bloc ?

Eléphant du PHP | 158 Messages

03 mai 2006, 15:27

J'ai utilisé ton petit script qui tourne avec la méthode 1 pour le moment (mais j'ai laissé l'autre en commentaire) :)
°°°Darkbibou°°°