2013-06-18 4 views
0

я пытаюсь установить некоторые атрибуты моей связи п.д.о., я использую Odbc drvier, что при подключении к SQL Server, и я получаю неизвестный атрибутsetAttribute to PDO с использованием драйвера ODBC?

$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 к ложному Потому что я прочитайте здесь, это безопасный способ остановить SQL-инъекцию при использовании функции functiom.

ответ

0

Вы должны использовать подготовленные операторы, чтобы сделать его надежным.
Хотя 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); –

0

Невозможно использовать подготовленные заявления от Linux до MSSQL. Разверните свой производственный код в Windows и используйте драйвер PDO SQLSRV или не используйте подготовленные инструкции (что в основном означает, что вы не можете использовать Unicode).

Смежные вопросы