【问题标题】:preorder traversal nodes are not deleting in codeigniter前序遍历节点未在 codeigniter 中删除
【发布时间】:2012-07-28 08:40:04
【问题描述】:

我已经按照 sql 查询来删除节点。

$sql="LOCK TABLE xp_subunit WRITE; ";
            $sql .= "SELECT @myLeft := ".$_GET['lft'].", @myRight :=  ".$_GET['rgt'].", @myWidth :=  ".$_GET['lft']." - lft + 1
            FROM xp_subunit
            WHERE id =".$_GET['id']."; ";

            $sql .= "DELETE FROM xp_subunit WHERE lft BETWEEN @myLeft AND @myRight; ";

            $sql .= "UPDATE xp_subunit SET rgt = rgt - @myWidth WHERE rgt > @myRight; ";
            $sql .= "UPDATE xp_subunit SET lft = lft - @myWidth WHERE lft > @myRight; ";
            $sql.="UNLOCK TABLES;";

            //echo $sql;
            echo $query = $this->db->query($sql);

我在 phpmyadmin 中尝试了这个查询,它成功执行并根据需要删除了节点。但是当我将其转换为 codeigniter 代码时,它会给出 mysql 语法错误,例如:

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 'DELETE FROM xp_subunit WHERE lft BETWEEN @myLeft AND @myRight;UPDATE xp_subunit ' at line 3

SELECT @myLeft := 1, @myRight := 29, @myWidth := 1 - lft + 1 FROM xp_subunit WHERE id =1; DELETE FROM xp_subunit WHERE lft BETWEEN @myLeft AND @myRight;UPDATE xp_subunit SET rgt = rgt - @myWidth WHERE rgt > @myRight;UPDATE xp_subunit SET lft = lft - @myWidth WHERE lft > @myRight;

我是不是做错了什么……谢谢。

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    $this->db->query($sql) 用于运行单个查询。

    不支持一次调用中的多个查询。

    【讨论】:

    • 那么有什么替代方案吗?
    • 我用mysqli_multi_query()它正在执行和删除记录。如何让它成功执行..不返回任何值。
    • 返回布尔值有什么问题?如果您不需要它,请不要检查它。
    • 它没有返回任何值...空白
    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    相关资源
    最近更新 更多