首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用嵌套集合模型在表中插入新节点的SQL查询执行失败

问使用嵌套集合模型在表中插入新节点的SQL查询执行失败
EN

Stack Overflow用户
提问于 2011-04-22 18:30:18
回答 1查看 332关注 0票数 0

我目前正在使用嵌套set模型,并且已经阅读了MySQL站点(Managing Hierarchical Data in MySQL)上的文章。

我直接从这篇文章中得到了以下查询:

代码语言:javascript
复制
LOCK TABLE categories WRITE;

SELECT @myRight := right FROM categories WHERE name = ?;

UPDATE categories SET right = right + 2 WHERE right > @myRight;
UPDATE categories SET left = lft + 2 WHERE left > @myRight;

INSERT INTO categories (name, left, right) VALUES(?, @myRight + 1, @myRight + 2);

UNLOCK TABLES;

我使用PHP和MySQLi函数来执行如下语句:

代码语言:javascript
复制
if (false !== $stmt = $mysqli->prepare($query)) {
    $stmt->bind_param('ss', 'services', 'hosting');
    $stmt->execute();
    $stmt->close();
} else {
    echo $mysqli->error;
}

下面的代码产生一个语法错误:

代码语言:javascript
复制
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 := right FROM categories WHERE name = ?; UPDATE categories SET righ' at line 3

我希望有人能帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-22 18:32:23

MySQLi::prepare仅适用于单语句查询。

你应该把你的查询分成一系列的单条语句,准备好这些语句,然后独立地发出它们。

或者,将批处理包装到存储过程中并调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5754523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档