我试图用mysql_query
插入此查询INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,1,1) ;
INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,2,1) ;
INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,3,1) ;
INSERT INTO um_group_rights (`um_group_id`,`cms_usecase_id`,`um_right_id`) VALUES (2,4,1) ;
然后它返回:
1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法;在第1行插入um_group_rights(um_group_id
,cms_usecase_id
,um_right_id
)V'
它显然有分号的问题,但我不明白为什么。它在phpmyadmin中没有问题。 php版本是5.2.6
答案 0 :(得分:2)
只是为了确定:当您尝试从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
(引用,强调我的):
mysql_query()
发送一个唯一的查询 (不支持多个查询)到当前有效 服务器上的数据库 与指定相关联link_identifier
。
你必须“分离”你的查询 - 这可能是phpMyAdmin没有告诉你的事情。
并且,评论中的@Alexandre pointed out:
查询字符串不应以a结尾 分号。
如果您使用mysqli_*
函数(而不是mysql_*
)来访问数据库,则可以尝试使用mysqli_multi_query
。
不幸的是,mysql_*
有这样的功能。
(顺便说一句:mysql_*
API是旧的 - 如果使用mysqli_*
在评论后修改:
如果是关于表演的话,是的,对数据库进行一次调用,而不是连续四次PHP <-> MySQL
次呼叫,可能会更好。
在这种情况下,您可以尝试使用允许一次插入多行的插入语法;请参阅MySQL手册中的12.2.5. INSERT Syntax (引用):
使用INSERT
的
VALUES
语句 语法可以插入多行。
为此,请包含多个列表 列值,每个都包含在其中 括号并用逗号分隔。
示例:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
每行的值列表必须是 括在括号内。
答案 1 :(得分:2)
与phpMyAdmin不同,mysql_query()一次只能执行一个查询。
您必须拆分字符串,或切换到mysqli和mysqli_multi_query()。