我试图做一个多语句查询mysql,但我得到一个语法错误:
"你的SQL语法有错误;查看手册对应于MySQL服务器版本,以便使用正确的语法INSERT INTO vinas_new (img, new_order, publici ' at line 2"
奇怪的是,如果我选择查询的字符串,并尝试在Navicat上执行它,它可以正常工作。
我试图使用的查询字符串是这个。
'BEGIN;
INSERT INTO vinas_new (
img,
new_order,
publicationDate,
active,
cover
)VALUES(
"'.$data['img'].'",
"'.$data['new_order'].'",
"'.$data['publicationDate'].'",
"'.$data['active'].'",
"'.$data['cover'].'"
);
INSERT INTO vinas_new_content (
newId,
lang,
title,
text
)VALUES(
LAST_INSERT_ID(),
"'.mysql_real_escape_string($data['lang']).'",
"'.mysql_real_escape_string($data['title']).'",
"'.mysql_real_escape_string($data['text']).'"
);
COMMIT;';
我想它与分号有关,我试图使用分隔符来避免这个问题,但没有任何运气。
有什么建议吗?
感谢您的宝贵时间。
最简单的调试方法是直接显示echo $sql
的结果(或者您存储查询的变量名称)
然而,你似乎使用过时的mysql_
API,不支持多个查询:
mysql_query()向与指定的link_identifier
相关联的服务器上当前活动的数据库发送一个唯一查询(不支持多个查询)
尝试切换到mysqli
(或PDO)并使用准备好的语句(或其中3个),这样你就不必自己逃避数据(如果你想坚持使用mysql_
,你必须将其分割为3个查询;或为任务创建存储过程)。
或者如果你坚持一次完成所有的操作(我不认为你有任何理由这样做),你可以使用mysqli::multi_query()
。