1

PhpMyAdmin を使用して手動で実行している場合は完全に機能する SQL クエリがありますが、PHP から実行すると実行できません。

クエリ:

LOCK TABLE table_name WRITE;

SELECT @myRight := rgt FROM table_name
WHERE name = 'feildname';

UPDATE table_name SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE table_name SET lft = lft + 2 WHERE lft > @myRight;

INSERT INTO table_name(name, lft, rgt) VALUES('new_feild_value', @myRight + 1, @myRight + 2);

UNLOCK TABLES;

ユーザー入力から変数を取得した PHP ページでクエリを実行したいと考えています。これはnew_feild_value、以下のコードで確認できます。

<?php
$newname = $_POST['newname'];
$sqlquery = 'LOCK TABLE table_name WRITE;

    SELECT @myRight := rgt FROM table_name
    WHERE name = "feildname";

    UPDATE table_name SET rgt = rgt + 2 WHERE rgt > @myRight;
    UPDATE table_name SET lft = lft + 2 WHERE lft > @myRight;

    INSERT INTO table_name(name, lft, rgt) VALUES("' .$newname . '", @myRight + 1, @myRight + 2);

    UNLOCK TABLES;';
if(!mysqli_query($link,$sqlquery)){ //$link is variable to make sql connection
                echo 'error inserting the comment';
            exit();
            }
 echo 'successfully inserted the values';
?>

上記の PHP スニペットは機能しませんが、同じスニペットに対して、他の単純なクエリは機能しています。問題は何ですか?どうすれば修正できますか?

4

1 に答える 1

4

mysqli を使用して 1 つのステートメントで複数のクエリを実行するには、mysqli_multi_query を使用する必要があります。http://php.net/manual/en/mysqli.multi-query.php

于 2012-08-21T21:38:03.280 に答える