mySQL CodeIgniter - 语法错误号:1064

时间:2013-05-06 10:00:03

标签: php mysql codeigniter

我正试图解决这个问题,我似乎无法弄清楚这个查询如何返回语法错误。我对mySQL的了解很少,因为我只是在掌握它。

这是我正在尝试执行的查询:

function _delete_leaf_node($id){

$query ="";

$query .=" SELECT @myLeft := lft, @myRight := rgt, @myWidth := rgt - lft + 1";
$query .=" FROM pages";
$query .=" WHERE id =".$id.";";

$query .=" DELETE FROM pages WHERE lft BETWEEN @myLeft AND @myRight;";
$query .=" UPDATE pages SET rgt = rgt - @myWidth WHERE rgt > @myRight;";
$query .=" UPDATE pages SET lft = lft - @myWidth WHERE lft > @myRight;";    

$this->_custom_query($query);

}

这是我收到的错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'DELETE FROM pages WHERE lft = @myLeft UPDATE pages SET rgt = rgt + 1,lft = lft'第1行附近使用正确的语法

我已检查是否传递了正确的ID。也许变量没有以正确的方式设置?我只是不知道会怎么检查。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

function _delete_leaf_node($id){

    $query  =" SELECT @myLeft := lft, @myRight := rgt, @myWidth := rgt - lft + 1";
    $query .=" FROM pages";
    $query .=" WHERE id =".intval($id);

    $this->_custom_query($query);

    $this->_custom_query("DELETE FROM pages WHERE lft BETWEEN @myLeft AND @myRight");
    $this->_custom_query("UPDATE pages SET rgt = rgt - @myWidth WHERE rgt > @myRight");
    $this->_custom_query("UPDATE pages SET lft = lft - @myWidth WHERE lft > @myRight");
}