CodeIgniter stöder inte förberedda uttalanden. Om du tittar på källkoden för CI:s databasklass kommer du att se att de löser bindningar helt enkelt genom att ersätta frågetecknen med data från den godkända arrayen:
De stöder endast frågebindning med namnlösa platshållare. Se http://ellislab.com/codeigniter/user-guide/database/ queries.html
Frågebindningar
Bindningar gör att du kan förenkla din frågesyntax genom att låta systemet sätta samman frågorna åt dig. Tänk på följande exempel:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick'));
Frågetecknen i frågan ersätts automatiskt med värdena i arrayen i den andra parametern i frågefunktionen.
och http://ellislab.com/forums/viewthread/105112/#528915
Även om CI inte stöder förberedda uttalanden, stöder det frågebindningar. Med preparerade satser måste du anropa någon typ av prepare() funktion och sedan någon typ av execute() funktion. Med frågebindningar behöver du bara anropa en funktion och den gör i princip samma sak. På grund av detta gillar jag frågebindningar bättre än förberedda uttalanden.
På en sida ändrar du ?
till :foo
byter bara från namnlösa till namngivna bindningar (vilket CI tydligen inte heller stöder). Bara för att du använder antingen eller betyder det inte att du förbereder påståendena.