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 :

[SQL] Traitement de plusieurs requ�tes .SQL dans un script PHP?


Sujet :

PHP & Base de donn�es

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    M4x
    M4x est d�connect�
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par d�faut [SQL] Traitement de plusieurs requ�tes .SQL dans un script PHP?
    Bonjour,

    En rapport avec ce probl�me.

    Voila grosso modo la tronche du script qui sera execut� p�riodiquement avec un cron job:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    require("identifresh.inc.php");
     
    $connexion = mysql_connect(localhost,$user,$pass);
    @mysql_select_db($database) or die( "Base introuvable");
     
    ICI un fichier .sql contenant toutes les requêtes à executer. 
     
    mysql_close($connexion);
    ?>
    Dans le identifresh.inc.php je mettrai mes variables de connexion bien s�r.

    Ma question est donc : Comment �xecuter dans un fichier PHP les requ�tes SQL qui se trouvent � l'int�rieur d'un fichier .sql (quelque part sur le serveur, exemple backup.sql) ? Doit bien y avoir une fonction pour �a je suppose nah ?
    Certes je pourrai copier/coller en ces fameuses requetes, mais doit bien y avoir un moyen de lire celles-ci depuis un fichier sql non ?

  2. #2
    R�dacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    F�vrier 2004
    Messages
    13 721
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activit� : Directeur technique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 13 721
    Par d�faut
    Salut

    Je pense que tu as deux options.
    • Utiliser une commande syst�me pour ex�cuter les commandes de ton fichier (je d�placerai le sujet dans le forum MySQL si c'est la solution que tu choisis)
    • Utiliser la fonction PHP split() pour ex�cuter les requ�tes une � une, ce qui peut poser probl�me si tu as des points virgules ailleurs que pour s�parer les requ�tes


    � mon avis, le mieux serait d'avoir un fichier texte de donn�es brutes et d'utiliser mysqlimport ou LOAD DATA INFILE, plut�t que d'ex�cuter le SQL contenu dans un fichier.

  3. #3
    M4x
    M4x est d�connect�
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par d�faut
    Salut Kirkis,

    En fait je place ceci dans un fichier .php car je veux que ce soit executer automatiquement et periodiquement par un cron (donc aucun input utilisateur).

    Utiliser la fonction PHP split() pour ex�cuter les requ�tes une � une, ce qui peut poser probl�me si tu as des points virgules ailleurs que pour s�parer les requ�tes
    Ok mais la fonction split elle va trifouiller dans le fichier sql ? Car il est pour moi hors de question que je sorte les requetes de leur fichier sql.

    Enfin bon, je jetterai un oeil � toutes les fonctions PHP dispo' qui tournent autour de MySQL, et puis je me suis command� le bouquin des editions o'reilly, �tant donn� que �a n'a pas l'air si simple que �a, donc bon...je finirais par trouver comment lire et executer automatiquement un fichier .sql a partir d'un fichier php -_-' .

  4. #4
    R�dacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    F�vrier 2004
    Messages
    13 721
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activit� : Directeur technique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 13 721
    Par d�faut
    Peu importe que ton script soit ex�cut� par une t�che cron ou autrement. Du moment qu'il est ex�cut�, cela nous suffit pour r�fl�chir � la mani�re de le construire ^^

    Comment veux-tu ex�cuter des requ�tes contenues dans un fichier SQL si tu n'acc�des jamais � ce fichier ? Tu es bien oblig� de le lire � un moment ou � un autre !
    Mon id�e �tait d'utiliser file_get_contents() pour r�cup�rer les requ�tes dans une variable, puis split() sur cette variable pour s�parer les requ�tes et ainsi pouvoir les ex�cuter une � une.

    Je le r�p�te, la meilleure solution consisterait � avoir un fichier CSV plut�t qu'un fichier contenant les requ�tes SQL. L�, oui, ce serait simple � importer. Mais j'imagine qu'il ne s'agit pas (uniquement ou du tout) d'importer des donn�es...

  5. #5
    M4x
    M4x est d�connect�
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par d�faut
    Citation Envoy� par Kirkis
    Peu importe que ton script soit ex�cut� par une t�che cron ou autrement. Du moment qu'il est ex�cut�, cela nous suffit pour r�fl�chir � la mani�re de le construire ^^
    Oui

    Comment veux-tu ex�cuter des requ�tes contenues dans un fichier SQL si tu n'acc�des jamais � ce fichier ? Tu es bien oblig� de le lire � un moment ou � un autre !
    Mais justement c'est la ma question, comment y acc�der � ce foutu fichier et lire son contenu :p !?

    Mon id�e �tait d'utiliser file_get_contents() pour r�cup�rer les requ�tes dans une variable,
    Et ben voila ! Ca ressemble a ce que je cherchais �a dites donc :p !!! je vais aller lire les d�tails de cette fonction tiens.

    puis split() sur cette variable pour s�parer les requ�tes et ainsi pouvoir les ex�cuter une � une.
    Hum ok ok...ne connaissant que peu encore ce genre de bidouilles, je ne vois pas l'int�ret du split encore, �a va s�rement venir quand j'aurai fait crasher le serv lol...

    Je le r�p�te, la meilleure solution consisterait � avoir un fichier CSV plut�t qu'un fichier contenant les requ�tes SQL. L�, oui, ce serait simple � importer. Mais j'imagine qu'il ne s'agit pas (uniquement ou du tout) d'importer des donn�es...
    Et bien je t'explique bri�vement. Imagine que je souhaite mettre phpBB et son administration en demonstration sur un site, pour que les internautes puissent essayer l'admin de phpBB, voir � quoi �a ressemble, si �a leur convient etc...Moi je leur fournis un identifiant admin lambda genre user=admin et pass=demo. Seulement voila...si je laissais faire, au bout d'un moment, le forum pourrait avoir plein de sujets tests � la con, ou pire encore un admin lambda vilain (� le vil) pourrait d�cider de changer le mot de passe "demo" et la les autres pourraient plus essayer l'admin par defaut...donc je souhaite "reset" p�riodiquement la base de donn�es phpBB (une fois par heure peut etre) en remplacant cette derni�re avec un backup (qui est au format SQL) effectu� avant m�me que je ne mette le site en demo.

    Pour faire + court :

    1. phpBB est install� avec son install par defaut, avec un compte admin bidon (admin/demo).
    2. je backup le tout sur un fichier sql.
    3. Les visiteurs arrivent, s'amusent avec l'administration.
    4 Au bout d'une heure, cron entre en action avec le script qui se connecte a la base de donnees et remplace celle-ci (suppos�ment modifi� par les visiteurs donc) par le backup effectu� dans l'etape 2.

    Voila de quoi il s'agit exactement. Maintenant un fichier CSV (c'est pas pour g�rer les changement de version �a ?) je suis pas sur de voir ce que c'est :p..donc je vais me documenter dessus.

  6. #6
    R�dacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    F�vrier 2004
    Messages
    13 721
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activit� : Directeur technique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 13 721
    Par d�faut
    Ah, alors il y a bien plus simple

    MySQL dispose de fonctions permettant de copier des tables enti�res avec leur contenu. J'imagine, sans avoir v�rifi�, qu'il y a la m�me fonctionnalit� avec une BDD compl�te.

    Tout d�pend des droits que tu as sur ta BDD. Si tu es autoris� � cr�er plusieurs bases de donn�es, le plus simple est d'en conserver une copie (dans une BDD appel�e `phpbb2_bak`, par exemple). Ton script se contentera donc de vider la BDD `phpbb2` puis d'y copier `phpbb2_bak`.
    Sinon, le principe est identique mais appliqu� � chaque table. La seule difficult� consiste � s�lectionner toutes les tables de la BDD en faisant la diff�rence entre les tables _bak et les autres (celles utilis�es pour la d�mo).

    J'ai dit CVS de t�te mais je crois que j'ai fait erreur. Je faisais r�f�rence aux fichiers de donn�es utilisant un caract�re pour s�parer les champs (TAB, par exemple).
    Bien s�r, mon logiciel de traitement de texte me fait la t�te aujourd'hui et il ne me propose plus ce format, donc pas moyen de retrouver le nom correct.
    [Edit] Je n'�tais pas loin : je parlais de "CSV".

Discussions similaires

  1. [AC-2003] Plusieures requ�tes SQL en vba dans la m�me macro?
    Par PAUL87 dans le forum VBA Access
    R�ponses: 4
    Dernier message: 22/10/2013, 16h43
  2. Afficher plusieurs requ�tes SQL dans une ListView
    Par GYooo dans le forum Composants graphiques
    R�ponses: 4
    Dernier message: 01/02/2013, 02h07
  3. Ex�cution de plusieurs requ�tes SQL dans Oracle
    Par 4rocky4 dans le forum PL/SQL
    R�ponses: 7
    Dernier message: 19/03/2009, 11h12
  4. [Data] [iBATIS] Plusieurs requ�tes SQL dans un <statement> ?
    Par Tourix dans le forum Spring
    R�ponses: 3
    Dernier message: 04/09/2006, 15h40
  5. Plusieurs requ�ts SQL dans un QReport
    Par arnaud_verlaine dans le forum C++Builder
    R�ponses: 9
    Dernier message: 23/05/2006, 15h04

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