只是为了确定:当您尝试从 PHP 执行这 4 个查询时,您正在调用mysql_query
四次 ?
例如 :
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,1,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,2,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,3,1)");
mysql_query("INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,4,1)");
我的意思是:你不能一次发送多个不同的查询,只需要一次调用mysql_query http://php.net/mysql_query (引用,强调我的) :
mysql_query()
发送唯一的查询(不支持多次查询)到当前活动的
服务器上的数据库是
与指定的相关联link_identifier
.
您必须“分离”您的查询——这可能是 phpMyAdmin 在没有告诉您的情况下所做的事情。
And, as @Alexandre 指出 https://stackoverflow.com/users/162407/alexandre-jasmin在评论中:
查询字符串不应以
分号。
如果您正在使用mysqli_* http://php.net/mysqli函数(而不是mysql_*
)要访问您的数据库,您可以尝试使用mysqli_multi_query http://php.net/manual/en/mysqli.multi-query.php.
不幸的是,有这样的功能mysql_*
.
(顺便说一句:mysql_*
API 是旧的——使用它会更好,特别是对于新项目mysqli_*
)
评论后编辑:
如果涉及性能,是的,对数据库进行一次调用,而不是连续四次调用PHP <-> MySQL
打电话,可能会更好。
在这种情况下,您可以尝试使用允许一次插入多行的插入语法;看12.2.5。插入语法 http://dev.mysql.com/doc/refman/5.1/en/insert.html在MySQL的手册中(引用) :
INSERT
使用的语句VALUES
语法可以插入多行。
为此,请包含多个列表
列值,每个值都包含在
括号并用逗号分隔。
Example:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
每行的值列表必须是
括在括号内。