使用ODBC驱动程序setAttribute到PDO?

问题描述:

我想设置一些属性,以我的PDO连接,我使用的是连接到SQL Server ODBC的和drvier我得到未知属性使用ODBC驱动程序setAttribute到PDO?

$db = new PDO("odbc:Driver={SQL Server};Server=127.0.0.1;Database=my_db;charset=utf8; Uid=my_usser;Pwd=my_pass;"); 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
print_r($db->errorinfo()); 

//It show me: Array ([0] => 00000 [1] => 0 [2] => Unknown Attribute (setAttribute[0] at (null):0) [3] => IM001) 

我想设置PDO :: ATTR_EMULATE_PREPARES假怎么我在这里阅读是一种安全的方式来停止使用准备functiom时的SQL注入。

您必须使用准备好的语句以使其安全。
尽管EMULATE_PREPARES与安全性和安全性无关。

另外,您必须仅使用驱动程序支持的设置

+0

http://stackoverflow.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection 它说有pdo->准备有时不是enoguh,我们需要使用$ pdo-> setAttribute(PDO :: ATTR_EMULATE_PREPARES,false); –

无法使用从Linux到MSSQL的预准备语句。在Windows上部署生产代码并使用PDO SQLSRV驱动程序,或者不要使用预准备语句(这基本上意味着您不能使用Unicode)。