По умолчанию PDO_MYSQL эмулирует подготовленные операторы. Чтобы использовать нативные подготовленные операторы на стороне сервера, нужно явно установить

вая что-то вроде

DB()->prepare("SELECT * FROM mysql.general_log WHERE user_host LIKE ?");

$statement->execute( array('%console%') );

foreach($statement as $record){
    var_dump($record);
}

Содержимое general_log

*************************** 1. row ***************************
event_time: 2011-04-20 14:27:59
user_host: REDACTED[REDACTED] @ REDACTED [192.168.56.101]
thread_id: 30
server_id: 0
command_type: Connect
argument: REDACTED@REDACTED on REDACTED
*************************** 2. row ***************************
event_time: 2011-04-20 14:27:59
user_host: REDACTED[REDACTED] @ REDACTED [192.168.56.101]
thread_id: 30
server_id: 0
command_type: Query
argument: SELECT * FROM mysql.general_log WHERE user_host LIKE '%console%'

Я работаю внутри структуры мерзости (без юнит-тестов, без документации, без правил и причин), поэтому возможно ли, что кто-то явно отключил MySQL, подготовив операторы, заставляющие PDO использовать эмулируемый режим ... или это ожидаемое поведение?

PHP этоPHP Version 5.2.10-2ubuntu6 Драйвер PDO для MySQL, версия клиентской библиотеки 5.1.41

Обновление: PDO () построен со следующими атрибутами

PDO::ATTR_PERSISTENT => false
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true

Я просмотрел документацию по PDO, но, к сожалению, нет упоминания о флаге, подобном тому, о котором написано вэто аналогичный вопрос

Ответы на вопрос(2)

Ваш ответ на вопрос