1

私は次の機能を持っています:

class Forums {
        public function getForum($id) {
            $database = new Database();
            $mysqli = $database->databaseConnection();
            $stmt = $mysqli->prepare("SELECT name, description FROM forums WHERE id = ?");
            $stmt->bind_param("i", $id);
            $stmt->execute();
            return $stmt;
        }
}

次のように呼び出します。

$forums = new Forums();
$result = $forums->getForum($_GET["id"]);
$result->bind_result($name, $description);
$result->fetch();

そして、1 行しか返さないので、必要なときにいつでも$nameorを呼び出し$descriptionます。

ただし、ブラウザ (Chrome) で次のエラーが表示されます。

エラー 324 (net::ERR_EMPTY_RESPONSE): サーバーはデータを送信せずに接続を閉じました。」

関数を削除してデータベースに接続し、結果が使用されるファイルに直接準備済みステートメントを作成すると、これは発生しません。

なぜこうなった?

4

1 に答える 1

2

変数のスコープの問題のようです。保持しているオブジェクトはメソッド実行$mysqli直後に破棄されます。getForum()そのため、開いている DB 接続もこの時点で破棄されます。ただし$result->fetch();、接続がまだ開いている必要があります。

于 2012-12-12T20:57:54.437 に答える