使用ODBC驱动程序将setAttribute设置为PDO?

时间:2013-06-18 08:41:58

标签: php sql pdo odbc

我正在尝试为我的pdo连接设置一些属性,我正在使用连接到SQL Server的odbc drvier,我得到了未知属性

$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设置为false因为我在这里阅读是一种在使用prepare functiom时停止sql注入的安全方法。

2 个答案:

答案 0 :(得分:0)

您必须使用预备声明才能确保安全 虽然EMULATE_PREPARES与安全性和安全无关。

此外,您只需使用驱动程序支持的设置

答案 1 :(得分:0)

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