我有一个通过命令行导入数据库的数据字符串。现在我将数据保存到一个文件中,导入该文件,然后删除该文件。有没有办法直接导入?
$data = '...'; file_put_contents('temp.sql', $data); exec('mysql ... < temp.sql'); unlink('temp.sql');
ftf50wuq1#
如果您必须按照编写的方式使用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或类似的工具?
$data = 'insert 1; insert 2;'; exec("mysql ... -e '$data'");
1qczuiv02#
你试过这个吗 mysqli_multi_query() 函数,它允许您用一个字符串执行多个查询?
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); }
2条答案
按热度按时间ftf50wuq1#
如果您必须按照编写的方式使用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或类似的工具?
1qczuiv02#
你试过这个吗
mysqli_multi_query()
函数,它允许您用一个字符串执行多个查询?如果字符串由于某种原因太大,可以用分号将其拆分
;
然后在数组上迭代。将最后一块代码替换为: