私は外部データベースに接続するので、データベースへの接続が必要な場合にのみ行われる方法が必要です(クエリがある場合) 。x :: prepare()の宣言はPDO :: prepareと互換性があるはずです
私はStackOverflowの上でこの答えを見つけました:Auto connecting to PDO only if needed
それは完璧だと私はこの方法を採用しています。私はそれを行うためのきれいな方法だと思います。
は、ほとんどの場合、私は私のクエリ、例えばプリペアドステートメントを使用します:
$sth = $dbh->prepare("SELECT username FROM users WHERE username = :username");
$sth->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
$sth->execute();
しかし、上記の回答のクラスでプリペアドステートメントを使用して、それは私を与える:しかし、ここで問題です
Warning: PDO::prepare(): SQLSTATE[00000]: No error: PDO constructor was not called
Fatal Error: Call to a member function bindParam() on null
だからクラスに追加しました:
public function prepare($query)
{
$this->checkConnection();
return parent::prepare($query);
}
そしてそれが動作します。しかし、それは私にこの警告を常に与える:
Strict Standards: Declaration of DB::prepare() should be compatible with PDO::prepare($statement, $options = NULL) in class_pdo.php on line 0
誰もが知っていますか?
ありがとうございました。
こんにちは、提案のためのおかげで、私は今、気づくだけで一つのこと。 NULLを指定すると、 'PDO :: prepare()はパラメータ2が配列になることを期待し、nullは'与えられます。だから私は空の配列を挿入したNULLの代わりに、それは動作します。 – Keaire