提问者:小点点

在phpmyadmin中工作的Laravel中存在MySQL访问冲突


我刚刚开始使用Laravel框架,并找到了一个很好的分层数据小指南(通过这个网站),我已经做得很好了。

我遇到的唯一问题是通过Laravel运行以下代码:

DB::query("LOCK TABLE pages WRITE;
        SELECT @myLeft := lft FROM pages WHERE id = ?;
        UPDATE pages SET rgt = rgt + 2 WHERE rgt > @myLeft;
        UPDATE pages SET lft = lft + 2 WHERE lft > @myLeft;
        UNLOCK TABLES;", 1);

工作正常,当我运行命令通过phpmyadmin,但在Laravel我得到一个错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;

我还有很多其他的查询运行正常,所以我不知道从哪里开始查找,我已经尝试向表名和字段名中添加`并移除锁,看看这是否能起到任何作用,但没有任何改变。


共2个答案

匿名用户

好的,我想Lavarel想要运行一个查询,我试图运行五个,当我将命令拆分为下面的工作时,

$ord = DB::first("SELECT lft FROM pages WHERE id = ?;", $order);            
        DB::query("UPDATE pages SET rgt = rgt + 2 WHERE rgt > ?;", $ord->lft);
        DB::query("UPDATE pages SET lft = lft + 2 WHERE lft > ?;", $ord->lft);

匿名用户

每个DB::query()只执行一个查询。在不查看源代码的情况下,此方法设计为只运行一条语句。