Come eseguire un set di query SQL da un file, in PHP?

Ho alcune serie di query SQL che si trovano in un file (es. Query.sql), e voglio eseguire quelle query nei file usando PHP, il codice che ho scritto non funziona,

//database config's... $file_name="query.sql"; $query=file($file_name); $arrays_length=count($query); for($i=0;$i<$arrays_length;$i++) { $data .= $query[$i]; } echo $data; mysql_query($data); 

rimuove la query SQL dal file ma genera un errore nella function mysql_query () …

  1. Non utilizzare file() less che non si desideri realmente i dati row per row. file_get_contents() è migliore.
  2. $query==file($file_name); Non penso che tu voglia fare un confronto qui.
  3. mysql_query eseguirà sempre e solo una singola query alla volta. Dovrai trovare un modo per separare le query nel file ed eseguirle una ad una.
 Try this: // SQL File $SQLFile = 'YourSQLFile.sql'; // Server Name $hostname = 'localhost'; // User Name $db_user = 'root'; // User Password $db_password = ''; // DBName $database_name = 'YourDBName'; // Connect MySQL $link = mysql_connect($hostname, $db_user, $db_password); if (!$link) { die("MySQL Connection error"); } // Select MySQL DB mysql_select_db($database_name, $link) or die("Wrong MySQL Database"); // Function For Run Multiple Query From .SQL File function MultiQuery($sqlfile, $sqldelimiter = ';') { set_time_limit(0); if (is_file($sqlfile) === true) { $sqlfile = fopen($sqlfile, 'r'); if (is_resource($sqlfile) === true) { $query = arrays(); echo "<table cellspacing='3' cellpadding='3' border='0'>"; while (feof($sqlfile) === false) { $query[] = fgets($sqlfile); if (preg_match('~' . preg_quote($sqldelimiter, '~') . '\s*$~iS', end($query)) === 1) { $query = trim(implode('', $query)); if (mysql_query($query) === false) { echo '<tr><td>ERROR:</td><td> ' . $query . '</td></tr>'; } else { echo '<tr><td>SUCCESS:</td><td>' . $query . '</td></tr>'; } while (ob_get_level() &gt; 0) { ob_end_flush(); } flush(); } if (is_string($query) === true) { $query = arrays(); } } echo "</table>"; return fclose($sqlfile); } } return false; } /* * * Use Function Like This: ** */ MultiQuery($SQLFile); 

Se ti sei mai preoccupato di leggere la pagina di manuale mysql_query (), questa function può eseguire una sola query alla volta.
Quindi, devi metterlo all'interno del ciclo

Questo tipo di operazioni vengono eseguite solitamente come script di shell. Per ulteriori letture, le seguenti letture saranno utili per conoscere i pro e i contro. Tuttavia, normalmente il tipo di operazioni batch deve essere eseguito in script .sql, altrimenti in esecuzione .sql è altamente sconsigliato.

Riferimenti:

Esecuzione di file MySQL * .sql in PHP

http://php.net/manual/en/function.shell-exec.php