如何在PHP中从文件运行一组SQL查询?

如何在PHP中从文件运行一组SQL查询?,php,mysql,file-io,Php,Mysql,File Io,我在filei.e query.SQL中有一些SQL查询,我想用PHP在文件中运行这些查询,我写的代码不起作用 //database config's... $file_name="query.sql"; $query=file($file_name); $array_length=count($query); for($i=0;$i<$array_length;$i++) { $data .= $query[$i]; } echo $data; mysql_query(

我在filei.e query.SQL中有一些SQL查询,我想用PHP在文件中运行这些查询,我写的代码不起作用

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

echo $data;    
mysql_query($data);

它响应文件中的SQL查询,但在mysql\u查询函数中抛出一个错误…

如果您费心阅读mysql\u查询手册页面,它说该函数一次只能执行一个查询。
因此,您必须将其放入循环中

如果您费心阅读mysql\u查询手册页面,它说此函数一次只能执行一个查询。 所以,你必须把它放在循环中

不要使用文件,除非您确实需要逐行读取数据。文件内容更好。 $query==文件$file\u名称;我认为你不想在这里做比较。 mysql\u查询一次只能执行一个查询。您必须想出一些方法来分离文件中的查询,并逐个运行它们。 不要使用文件,除非您确实需要逐行读取数据。文件内容更好。 $query==文件$file\u名称;我认为你不想在这里做比较。 mysql\u查询一次只能执行一个查询。您必须想出一些方法来分离文件中的查询,并逐个运行它们。
这类操作通常作为shell脚本执行。对于进一步的阅读,以下阅读将有助于了解利弊。但是,通常情况下,批处理类型的操作应该在.sql脚本下完成,否则运行.sql是非常不鼓励的

参考资料:


这类操作通常作为shell脚本执行。对于进一步的阅读,以下阅读将有助于了解利弊。但是,通常情况下,批处理类型的操作应该在.sql脚本下完成,否则运行.sql是非常不鼓励的

参考资料:

也读一些评论->也读一些评论->
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 = array();
    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 = array();
    }
    }
    echo "</table>";

    return fclose($sqlfile);
    }
    }

    return false;
    }

    /* * * Use Function Like This: ** */

    MultiQuery($SQLFile);