0

我正在尝试为我的 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,因为我在这里读到的是使用准备函数时停止 sql 注入的安全方法。

4

2 回答 2

0

您必须使用准备好的语句来确保它的安全。
虽然 EMULATE_PREPARES 与安全无关,但无论哪种方式都是安全的。

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

于 2013-06-18T08:46:26.207 回答
0

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

于 2014-06-18T12:10:51.667 回答