我正在尝试使用mysql进行多语句查询,但是我收到语法错误:
"您的SQL语法出错了;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近' INSERT INTO vinas_new(img,new_order,publi' 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;';
我想它与分号有关,我试图使用分隔符来避免这个问题,但没有任何运气。
有什么建议吗?
感谢您的时间。
答案 0 :(得分:1)
最简单的调试方法是向我们展示echo $sql
的结果(或者您存储查询的变量名称)。
但是,您似乎使用过时的mysql_
API doesn't support multiple queries:
mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)
尝试切换到mysqli
(或PDO)并使用prepared statement(或其中3个),这样您就不必自己逃避数据(如果您想坚持使用{{ 1}}你必须将它分成3个查询;或者为任务创建存储过程。
或者,如果你坚持一次性完成所有操作(我认为你没有任何理由),你可以使用mysqli::multi_query()
。