CodeIgniter no admite declaraciones preparadas. Si observa el código fuente de la clase de base de datos de CI, verá que resuelven los enlaces simplemente reemplazando los signos de interrogación con los datos de la matriz pasada:
Solo admiten el enlace de consulta con marcadores de posición sin nombre. Consulte http://ellislab.com/codeigniter/user-guide/database/ consultas.html
Enlaces de consulta
Los enlaces le permiten simplificar la sintaxis de su consulta al permitir que el sistema agrupe las consultas por usted. Considere el siguiente ejemplo:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
Los signos de interrogación en la consulta se reemplazan automáticamente con los valores de la matriz en el segundo parámetro de la función de consulta.
y http://ellislab.com/forums/viewthread/105112/#528915
Aunque CI no admite declaraciones preparadas, admite enlaces de consulta. Con declaraciones preparadas, debe llamar a algún tipo de función prepare () y luego a algún tipo de función de ejecución (). Con los enlaces de consulta, solo tiene que llamar a una función y básicamente hace lo mismo. Debido a esto, me gustan más los enlaces de consulta que las declaraciones preparadas.
En una nota al margen, cambiando ?
a :foo
simplemente está cambiando de enlaces sin nombre a enlaces con nombre (que CI aparentemente tampoco admite). El hecho de que use cualquiera o no significa que esté preparando las declaraciones.