[英]How to run a set of SQL queries from a file, in PHP?
我有一些SQL查询在一个文件(即query.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_query()函数中抛出错误...
file()
。 file_get_contents()
更好。 $query==file($file_name);
我不认为你想在这里做比较。 mysql_query
只会一次执行一个查询。 您必须想出一些方法来分离文件中的查询并逐个运行它们。 如果你打扰自己阅读mysql_query()手册页,它说这个函数一次只能执行一个查询。
所以,你必须把它放在循环中
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() > 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);
这些操作通常作为shell脚本执行。 如需进一步阅读,以下阅读将有助于了解其优缺点。 但是,通常批量操作应该在.sql脚本下完成,否则运行.sql是非常不鼓励的。
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.