将PHP字符串直接导入MySQL数据库,而不是编写和导入文件

时间:2018-10-24 18:04:30

标签: php mysql

我有一串数据,这些数据是通过命令行导入到数据库中的。现在,我将数据保存到文件中,导入文件,然后删除文件。

我可以直接导入它吗?

$data = '...';
file_put_contents('temp.sql', $data);
exec('mysql ... < temp.sql');
unlink('temp.sql');

2 个答案:

答案 0 :(得分:0)

如果必须使用php并使用exec作为外部程序将mysql作为外部程序执行,请使用mysql的命令行-e选项:

$data = 'insert 1; insert 2;'; exec("mysql ... -e '$data'");

https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_execute

我想知道也许您最好使用bash或类似工具?

答案 1 :(得分:-1)

您是否尝试过mysqli_multi_query()函数,该函数允许您使用一个字符串执行多个查询?

$link = mysqli_connect("localhost", "my_user", "my_password", "my_database");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Run queries */
if (mysqli_multi_query($link, $data) === TRUE) {
    echo "It worked";
} else {
    echo "It didn't work";
}

如果由于某种原因该字符串太大,则可以用分号;将其拆分为一个数组,然后对其进行迭代。将最后的代码块替换为:

$queries = explode(";",$data);
foreach ($queries as $q) {
    mysqli_query($link, $q);
}