ваш код работает для меня на PHP 5.3.6 и mysqld 5.1.58 (он возвращает false и действительно использует готовит), попробуйте обновить PHP до> = 5.3, чтобы увидеть, если это проблема с версией (если это так, вероятно, возможно обновление) ваше единственное решение).
Несмотря на то, что даже если вам удастся установить этот флаг, это на самом деле не означает, что PDO будет использовать подготовленный оператор, если вы хотите проверить, действительно ли PDO использует готовит (и вы можете использовать wireshark ), вы мог бы написать простой скрипт, который делает подготовленный запрос:
<?php
$pdo = new PDO(..., array(ATTR::PDO_EMULATE_PREPARES => false));
$stmt = $pdo->prepare('SELECT :param');
$stmt->bindValue(':param', 5);
$stmt->execute();
прослушивать передачу, пока не обнаружите запрос "SELECT: param" - если: param был заменен знаком вопроса, то PDO использует готовит. Если он был заменен на «5», то PDO эмулирует подготовку.