PHP脚本不会转储SQL但phpMyAdmin会转储

时间:2012-06-18 00:57:44

标签: php mysql mysqldump

我尝试转储我的数据思想php脚本,但没有命令行。所以我使用this script创建我的.sql文件,然后尝试使用我的脚本:

$link = mysql_connect($host, $user, $pass);
mysql_select_db($name, $link);
$sqlFile = 'sql.sql';
$fsize = filesize($sqlFile);
$fopen = fopen($sqlFile, 'r');
$fread = fread($fopen, $fsize);
fclose($fopen);
mysql_query($fread) or die(mysql_error());
mysql_close();

当我尝试转储数据时出现错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TABLE `ps_access` (`id_profile` int(10) unsigned NOT NULL,`id_tab` int(10' at line 1

但是当我在phpMyAdmin sql输入选项卡中粘贴sql时,这个sql代码没问题:

DROP TABLE IF EXISTS `ps_access`;
CREATE TABLE `ps_access` (
`id_profile` int(10) unsigned NOT NULL,
`id_tab` int(10) unsigned NOT NULL,
`view` int(11) NOT NULL,
`add` int(11) NOT NULL,
`edit` int(11) NOT NULL,
`delete` int(11) NOT NULL,
PRIMARY KEY (`id_profile`,`id_tab`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

那么我在PHP脚本中的错误在哪里以及如何修复它以转储数据?

Avarage SQL文件大约是800KB

祝你好运, 乔治!

2 个答案:

答案 0 :(得分:1)

如果您的平均sql文件大约是800Kb并且您显示的是其中的一部分,那么您的字符串中有多个sql语句(除了您显示的两个...)并且您只能运行一个sql查询通过(不建议使用的......)mysql_query函数。

答案 1 :(得分:1)

发生错误是因为mysql_query不支持多个查询:

  

mysql_query()发送一个唯一的查询(多个查询不是   支持)到与指定link_identifier关联的服务器上当前活动的数据库。

source

理论上,您可以使用explode + foreach循环分别发送每个查询,但实际上这可能无法按预期工作。请参阅:Loading .sql files from within PHP