我目前正在使用嵌套set模型,并且已经阅读了MySQL站点(Managing Hierarchical Data in MySQL)上的文章。
我直接从这篇文章中得到了以下查询:
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函数来执行如下语句:
if (false !== $stmt = $mysqli->prepare($query)) {
$stmt->bind_param('ss', 'services', 'hosting');
$stmt->execute();
$stmt->close();
} else {
echo $mysqli->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 'SELECT @myRight := right FROM categories WHERE name = ?; UPDATE categories SET righ' at line 3我希望有人能帮我解决这个问题。
发布于 2011-04-22 18:32:23
MySQLi::prepare仅适用于单语句查询。
你应该把你的查询分成一系列的单条语句,准备好这些语句,然后独立地发出它们。
或者,将批处理包装到存储过程中并调用它。
https://stackoverflow.com/questions/5754523
复制相似问题