0

私はこれに頭を悩ませようとしていますが、このクエリが構文エラーを返す方法を理解できないようです。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 サーバーのバージョンに対応するマニュアルで、1 行目の「DELETE FROM pages WHERE lft = @myLeft UPDATE pages SET rgt = rgt + 1, lft = lft」の近くで使用する正しい構文を確認してください

正しいIDが渡されているかどうかを確認しました。おそらく、変数が適切な方法で設定されていませんか? どうやってそれをチェックするのかわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

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");
}
于 2013-05-06T10:22:42.333 に答える