【发布时间】:2012-12-28 23:17:19
【问题描述】:
这是我的插入 sql 语句:
$sql = "
LOCK TABLE notre_offre WRITE;
SELECT
@myRight := rgt FROM notre_offre
WHERE id = " . $this->input->post('category') . ";
UPDATE notre_offre SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE notre_offre SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO notre_offre(id, naziv, lft, rgt) VALUES(null, '" . $this->input->post('title') . "', @myRight + 1, @myRight + 2);
UNLOCK TABLES;
";
$query = $this->db->query($sql);
但是我遇到了语法错误:
"Error Number: 1064
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 'SELECT @myRight := rgt FROM notre_offre WHERE id = 2; UPD' at line 3
这里有什么问题?这可以从 phpmyadmin 和 cmd 完美运行。 "
【问题讨论】:
-
连同 Wolfgang 在下面的评论,我想补充一点,从你想要做的事情来看,你真的需要把它变成一个存储过程,或者获取第一个的结果查询并使用它来构造后面的查询。另外,我认为您需要将其放入事务中,而不是使用手动表锁定。
-
我知道这已被弃用,但我正在从 web.archive.org/web/20051023020223/http://dev.mysql.com/… 中学习
-
当然,我会尝试在下面的答案中汇总一些内容,但这需要几分钟。顺便说一句,那是一篇很棒的文章;不知道为什么现在这么难找。
-
是的,太棒了,这篇文章已经不在官方了,这是一个副本:) 非常感谢你
标签: php mysql codeigniter activerecord