我正在为我正在开发的应用程序创建一个安装脚本,需要在PHP中动态创建数据库.我已经有了它来创建数据库,但现在我需要加载几个.sql文件.我曾打算一次打开文件和mysql_query一行 - 直到我查看模式文件并意识到它们不是每行一个查询.
那么,我如何从PHP中加载一个sql文件(如phpMyAdmin的import命令)?
如何使用php导入mysql数据库中的.sql文件
我怎么能这样做,请帮我解决这个问题谢谢
此代码显示此错误..
There was an error during import. Please make sure the import file is saved in the same folder as this script and check your values:
MySQL Database Name: test
MySQL User Name: root
MySQL Password: NOTSHOWN
MySQL Host Name: localhost
MySQL Import Filename: dbbackupmember.sql
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码
<?php
//ENTER THE RELEVANT INFO BELOW
$mysqlDatabaseName ='test';
$mysqlUserName ='root';
$mysqlPassword ='';
$mysqlHostName ='localhost';
$mysqlImportFilename ='dbbackupmember.sql';
//DONT EDIT BELOW THIS LINE
//Export the database and output the status to the page
$command='mysql …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我必须更新共享主机提供商的网站.该网站有一个CMS.使用FTP上传CMS的文件非常简单.
我还必须导入一个大的(相对于PHP脚本的限制)数据库文件(大约2-3 MB未压缩).Mysql因外部访问而关闭,因此我必须使用FTP上传文件,并启动PHP脚本进行导入.遗憾的是,我无法访问mysql命令行函数,所以我必须使用本机PHP解析和查询它.我也不能使用LOAD DATA INFILE.我也不能像phpMyAdmin一样使用任何一种交互式前端,它需要以自动化的方式运行.我也不能用mysqli_multi_query().
有没有人知道或者有一个已编码的简单解决方案,可以将这样的文件可靠地拆分成单个查询(可能有多行语句)并运行查询.我想避免自己开始摆弄它,因为我可能遇到很多问题(如何检测字段分隔符是否是数据的一部分;如何处理备忘录字段中的换行符;等等上).有必须是这个现成的解决方案.
所以我有一个需要使用mysql_query()加载的SQL转储文件.不幸的是,用它执行多个查询是不可能的.
- >不能假设安装了mysql命令行客户端(mysql --help) - 用于直接加载SQL文件
- >不能假设安装了mysqli扩展
/* contents of dump.sql, including comments */
DELETE FROM t3 WHERE body = 'some text; with semicolons; scattered; throughout';
DELETE FROM t2 WHERE name = 'hello';
DELETE FROM t1 WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)
下面的explode()不起作用,因为某些转储内容的值包含分号.
$sql = explode(';', file_get_contents('dump.sql'));
foreach ($sql as $key => $val) {
mysql_query($val);
}
Run Code Online (Sandbox Code Playgroud)
在不修改转储文件的情况下加载SQL的最佳方法是什么?