[PHP-MySQL] Executer un script SQL

MarieJ -  
 Sennoa -
Bonjour,

Habituellement, j'execute une simple requete mySQL de la manière suivante:
$query=mysql_query("select AA FROM BB );
$result=mysql_fetch_array($query);

mais là je souhaiterais executer un script sql qui créer/insère un très grand nombre d'entrées.
Savez-vous comment faire pour executer un script/fichier SQL depuis une commande PHP ?

Merci d'avance

3 réponses

  1. 28ToM47
     
    Peut importe le nombre d'entrée, tu peux en enregistrer autant que tu veux ( jusqu'aux limites des ressources de ton serveur ).
    Pour cela utilise les boucles for ou while ( https://www.php.net/manual/en/control-structures.for.php ou www.php.net/while )
    Sachant que while se traduit par "tant que" et for par "pour".

    ex:
    $query=mysql_query("select AA FROM BB );
    while ( $result=mysql_fetch_array($query) ) {
    echo 'résultat :'.$result['AA'].'</ br>';
    }

    good luck ;)
    0
  2. MarieJ
     
    Merci de ta réponse mais j'ai vraiment besoin d'exécuter un script SQL depuis PHP.
    J'ai besoin de quelque chose qui ressemble à:

    $query=mysql_query("MONFICHIER.SQL");
    $result=mysql_fetch_array($query);

    Est-ce que quelqu'un sait ?
    Merci
    0
  3. MickaelTapon
     
    Je suis également impatient d'avoir la réponse...
    0
    1. Sennoa
       
      Pour que ça marche, il faut procéder en plusieurs étapes :
      1 - Ouvrir le fichier sql et le mettre dans une variable avec ob_get_contents()
      2 - utiliser mysqli plutôt que mysql car il faut pouvoir faire une requête multiple dans un seul query

      $link = mysqli_connect(DBHOST, DBUSER, DBPASSWD, DBNAME);
      
      if (!$link) {
          die('Connect Error (' . mysqli_connect_errno() . ') '
                  . mysqli_connect_error());
      }
      
       if (is_file("./create.sql")) {
            ob_start();
            include "./create.sql";
            $contents = ob_get_contents();
            ob_end_clean();
      //Protège les caractères spéciaux d'une chaîne pour l'utiliser dans une requête SQL
            $contents = mysqli_real_escape_string  ($link , $contents);
      //attention l'ordre des parametre est inversé par rapport à un mysql_query()
           $res = mysqli_multi_query($link, $contents);
      }
      mysqli_close($link);
      0