简体   繁体   English

mysql语法错误仅在由php执行时

[英]mysql syntax error only when executed by php

I got this request: 我收到了这个请求:

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

And I receive this error: 我收到此错误:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM awaiting_auth WHERE code = '06b8465eed00727a1eac49fae89b88f876de' at line 1". “您的SQL语法有误;请在第1行的'DELETE FROM awaiting_auth WHERE code ='06b8465eed00727a1eac49fae89b88f876de'附近使用与您的MySQL服务器版本相对应的手册以使用正确的语法。”

However when executing sql via terminal everything goes well and no errors are thrown. 但是,通过终端执行sql时,一切进展顺利,并且不会引发任何错误。
What is wrong with my request? 我的要求出了什么问题? Thanks in advance. 提前致谢。

You must split the queries in separate ->query() calls. 您必须将查询拆分为单独的-> query()调用。 The SQL console does that automatically. SQL控制台会自动执行此操作。 Eg 例如

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

One operation per query. 每个查询一次操作。 So you need to split your query into single queries. 因此,您需要将查询拆分为单个查询。

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

Try to execute each statement individually: 尝试分别执行每个语句:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM