我有一个用户可以实例化的数据库类。
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? - 通过使用
PDO::getAttribute('PDO::ATTR_DRIVER_NAME')
?