我想导入整个数据库,这实际上是一个.sql文件,并将其导入mysql服务器。在这个数据库中,我有一个表,它存储html代码。
我使用mysqli
连接数据库,工作正常。
$mysqli = new mysqli(mysql_host, mysql_username, mysql_password, mysql_database);
接下来,我使用函数file_get_contents()
从.sql文件中获取内容,并将其放在$sql
var中。我在每个分号上分割$sql
。这样做我只有一个查询。
$sql = file_get_contents(sql_filename);
$queries = preg_split("/(;|#|%%)/", $sql );
我使用$mysqli->query
对数据库执行查询。
for($i = 0; $i < count($queries)-1; $i++){
//mysql_query($queries[$i]) or die(mysql_error());
$result = $mysqli->query($queries[$i]);
if (!$result) {
die('<br>Invalid query: ' . $queries[$i]);
} else {
echo 'Query: '. $queries[$i] ." is successful... <br>";
}
}
这很好用:
drop database if exists databasename;
create database business_databasename;
use databasename;
我面临的问题是它在每个分号上都会分裂。
INSERT INTO `mtgpV1_template` (`id`, `name`, `content`) VALUES
(1, 'Sjabloon 1', '<!DOCTYPE HTML><html><head>...
<style type="text/css">\r\n<!--\r\nbody,td,th {
\r\n font-family: verdana;\r\n font-size: 10px;\r\n
如果分号在a中,我想防止分裂发生。我怎样才能做到这一点?
或者是否可能有另一种导入.sql文件并使用php代码执行多个查询的方式?
答案 0 :(得分:1)
$sql = file_get_contents(sql_filename);
$mysqli->multy_query($sql);