[PHP-MySQL] Executer un script SQL
MarieJ
-
Sennoa -
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
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
-
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 ;) -
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 -
-
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);
-