用分号复杂划分字符串

时间:2014-06-02 15:17:08

标签: php mysql sql

我想导入整个数据库,这实际上是一个.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代码执行多个查询的方式?

1 个答案:

答案 0 :(得分:1)

$sql = file_get_contents(sql_filename);
$mysqli->multy_query($sql);