只有在php执行时才会出现mysql语法错误

时间:2013-08-12 11:06:21

标签: php mysql

我收到了这个请求:

"START TRANSACTION; DELETE FROM `awaiting_auth` WHERE `code` = '06b8465eed00727a1eac49fae89b88f876ded2eb' LIMIT 1; INSERT IGNORE INTO `prsn` SET `login` = 'new_user', `passwd` = '40bd001563085fc35165329ea1ff5c5ecbdbbeef', `color` = '#cbc5f2'; COMMIT;"

我收到此错误:

  

“您的SQL语法有错误;请查看手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'DELETE FROM awaiting_auth WHERE code =   '06b8465eed00727a1eac49fae89b88f876de'在第1行“。

然而,当通过终端执行sql时,一切顺利,不会抛出任何错误 我的要求有什么问题?提前谢谢。

4 个答案:

答案 0 :(得分:2)

您必须在单独的> query()调用中拆分查询。 SQL控制台会自动执行此操作。 E.g。

->query("START TRANSACTION");
->query("DELETE FROM...");

答案 1 :(得分:0)

每个查询一个操作。因此,您需要将查询拆分为单个查询。

答案 2 :(得分:0)

只需逐个运行这些查询,而不是单个数据包。

答案 3 :(得分:0)

尝试单独执行每个语句:

START TRANSACTION;
DELETE FROM `awaiting_auth` WHERE `code` = '06b8465eed00727a1eac49fae89b88f876ded2eb' LIMIT 1;
INSERT IGNORE INTO `prsn`(`login`, `passwd`, `color`) VALUES('new_user','40bd001563085fc35165329ea1ff5c5ecbdbbeef', '#cbc5f2');
COMMIT;