0

私は数年ぶりにphpを使いこなしています。単純な選択ステートメントを実行しようとしています。このステートメントが mysql に対して直接機能することを確認しました。私のphpは完了しません。real_query が機能しない理由を知りたいです。また、このシナリオからエラー メッセージを引き出す方法も知りたいです。コードは次のとおりです。

function getRoot($nid)
{
    echo $nid; //displays 0
    try 
    {
        echo "Hello?"; //This displays

        //Why doesn't this work?!
        if($mysqli->real_query("SELECT * FROM gem, bundles WHERE gem.nid = bundles.baseNid AND bundles.nid = " . $nid))
        {
            echo "dafuq?"; //does not display
        }
        else
        {
            echo "foo"; //doesn't display
            echo $mysqli->error; //doesn't display
        }
    }
    catch (Exception $e)
    {
        echo "Tralalalala"; //doesn't display
    }
    echo "teeheehee"; //doesn't display
}

ご協力いただきありがとうございます!

4

2 に答える 2

6

関数で変数が宣言されていない$mysqliため、コードはFATAL ERROR- 非オブジェクトのメソッドを呼び出しています。if$mysqliがグローバル変数の場合global $mysqli;、関数の先頭に追加する必要があります

于 2013-05-29T10:45:51.000 に答える
4

$mysqliが関数で定義されておらず、PHP が標準例外を使用してキャッチできない致命的なエラーをスローします。

エラー報告を有効にする必要があります (display_errors を php.ini で On に設定するか、ini_set を介して設定します。例: ini_set('display_errors', '1'););

于 2013-05-29T10:45:43.150 に答える