CodeIgniter ondersteunt geen voorbereide verklaringen. Als je naar de broncode voor de databaseklasse van CI kijkt, zul je zien dat ze bindingen oplossen door simpelweg de vraagtekens te vervangen door de gegevens uit de doorgegeven array:
Ze ondersteunen alleen Query Binding met niet nader genoemde tijdelijke aanduidingen. Zie http://ellislab.com/codeigniter/user-guide/database/ queries.html
Zoekopdrachtbindingen
Met bindingen kunt u uw querysyntaxis vereenvoudigen door het systeem de query's voor u te laten samenstellen. Beschouw het volgende voorbeeld:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick'));
De vraagtekens in de query worden automatisch vervangen door de waarden in de array in de tweede parameter van de query-functie.
en http://ellislab.com/forums/viewthread/105112/#528915
Hoewel CI geen voorbereide instructies ondersteunt, ondersteunt het wel Query Bindings. Met voorbereide instructies moet je een soort prepare()-functie aanroepen en vervolgens een soort execute()-functie. Met querybindingen hoeft u maar één functie aan te roepen en doet deze in feite hetzelfde. Daarom vind ik query-bindingen beter dan voorbereide instructies.
Even terzijde, het veranderen van ?
naar :foo
verandert alleen van naamloze naar benoemde bindingen (die CI blijkbaar ook niet ondersteunt). Alleen omdat je een van beide gebruikt of niet, betekent niet dat je de verklaringen aan het voorbereiden bent.