2
我有一個用戶可以實例化的數據庫類。如何處理已準備好的語句的禁用
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')
?