PHPデータベース接続に疑問があります。私は大きなtry/catch/finallyブロックを自分のメソッド(Javaスタイル)に置くことができないので、サイズ/ロジックが増加する傾向にあるときに、すべての接続を完全に閉じてプリペアドステートメントを実行する最良の方法は何ですか?次の方法を考えると、すべてが正しく行われていますか?PHPでのデータベース接続を正しく終了する
あなたはまだPHPでキャッチ/試す使用することができますpublic function createRegister($register) {
$this->openConnection();
$query = "INSERT INTO register (username, password, email, confirmationToken) VALUES (?, ?, ?, ?)";
$result = $this->mysqli->query($query);
if ($statement = $this->mysqli->prepare($query)) {
$statement->bind_param("ssss", $register->username, $register->passwordHash, $register->email, $register->confirmationToken);
if (!$statement->execute()) {
$this->closeConnection();
throw new DAOException("Failed to execute statement: " . $statement->error);
}
$statement->close();
} else {
$this->closeConnection();
throw new DAOException("Failed to prepare statement: " . $this->mysqli->error);
}
$this->closeConnection();
}
本当に各クエリで接続を開いたり閉じたりしたいですか?異なるレイヤーのコードを混在させる理由は何ですか?クエリの実行を別の関数にカプセル化する必要があります。 –
@yi_H:優れた点。私の回答では、シングルトン/工場パターンを使って接続をリサイクルする機能について述べました。 –