【发布时间】:2018-07-10 13:29:31
【问题描述】:
我正在尝试在 php mysqli 查询上使用 mysql 事务查询,如下所示:
$sql = "START TRANSACTION;
INSERT INTO songs (title, disco, deleted) VALUES ('".$titol."', '".$codi."', '0');
SET @last_id = LAST_INSERT_ID();
INSERT INTO lyrics (`lyricsOri`, `lyricsTra`, `song`, `deleted`) VALUES ('".$lyricsO."', '".$lyricsT."', @last_id, 0);
COMMIT;";
connection()->query($sql);
如果我在它之后得到$sql 值并将其作为 sql 命令复制粘贴到我的管理员的 php 中,它运行良好并且它完成了它应该做的事情但是,当我通过 php 运行它时它不起作用,我不知道为什么。
我知道我可以使用 php 本机事务,将其设置为 auto_commit(FALSE) 并在其上添加不同的查询以最终提交它,但在这种情况下,我想“按原样”使用 mysql 命令,我可以'找不到为什么它不能正常工作。
任何人看到故障或可以告诉我为什么它不起作用?
谢谢!
【问题讨论】:
-
默认情况下,PHP mysql 的客户端不支持以分号
;分隔的多条SQL 语句。所以你需要使用多个查询调用。此外,您还应该阅读有关防止 SQL 注入的内容stackoverflow.com/questions/60174/… -
你试过用multi_query代替查询吗?
标签: php mysql mysqli transactions