ユーザーがインスタンス化できるデータベースクラスがあります。
class Foo extends PDO
{
public function __construct($dsn, $username, $password)
{
parent::__construct($dsn, $username, $password);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
$dsn = 'mysql:host=127.0.0.1;dbname=dbdatabase;charset=utf8';
$dbConnection = new Foo($dsn, 'root', 'password');
ただし、使用されるドライバーが次の場合は、コンストラクターでプリペアドステートメントのエミュレーションを無効にする必要がありますmysql
。
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
(私が知っている)他のドライバーの場合、プリペアドステートメントのエミュレーションはデフォルトで無効になっています(そうあるべきです)。私のクラスでエミュレートされたプリペアドステートメントを無効にする正しい方法は何でしょうか。
- エミュレートされたプリペアドステートメントを無効にする行を常に追加しますか?これには副作用がありますか?
stripos($dsn, 'mysql:')
dsnでmysqlを見つけるためにaを実行しますか?PDO::getAttribute('PDO::ATTR_DRIVER_NAME')
?を使用して