質問

PHPで行っている新しいプロジェクトのために、データベースに接続してクエリを実行するSQLMethodsクラスを作成しました。今夜は実際にそれをテストした最初の夜で(1週間ほど前に書いて忘れていました)、予期しないエラーが発生しました:ExecuteQuery()関数を呼び出していたとき、データベースを使用しませんでしたコンストラクタで選択されます。

コンストラクター:

    public function SQLMethods() {
        $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);

        if (!$SQLConnection) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($SQLDB, $SQLConnection);
    }

問題の関数:

    public function ExecuteQuery($Query) {
        mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
    }

誰が問題が何であるかを見ていますか?コンストラクターの完了後に接続は閉じますか?

役に立ちましたか?

解決

クラスで$ SQLConnectionを宣言する必要があり、それを

として参照する必要があります
 $this->SQLConnection

単なる$ SQLConnectionではありません。

他のヒント

$ SQLConnection は、 ExecuteQuery メソッド内に存在しません。

ExecuteQuery にパラメーターとして直接渡すか、コンストラクターで設定され、 $ this-としてアクセスされる sqlConnection クラスプロパティを追加できます。 > sqlConnection クラスメソッド内。

使用しようとしている変数 $ SQLConnection ExecuteQuery()は、別のスコープ内で作成されます。 ( SQLMethods 関数)。

PHPスクリプトが処理を完了したとき、または自分で閉じた場合(そのスクリプト内で接続が行われた場合)、接続は閉じます

php.netのドキュメントに記載されているように、 ExecuteQuery 内の $ SQLConnection 変数をスキップする必要があります

  

リンク識別子が指定されていない場合、 mysql_connect()によって開かれた最後のリンクが想定されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top