CodeIgniter tidak mendukung Pernyataan yang Disiapkan. Jika Anda melihat kode sumber untuk kelas Database CI, Anda akan melihat bahwa mereka menyelesaikan pengikatan hanya dengan mengganti tanda tanya dengan data dari larik yang diteruskan:
Mereka hanya mendukung Pengikatan Kueri dengan placeholder yang tidak disebutkan namanya. Lihat http://ellislab.com/codeigniter/user-guide/database/ query.html
Pengikatan Kueri
Binding memungkinkan Anda menyederhanakan sintaks kueri dengan membiarkan sistem menyatukan kueri untuk Anda. Perhatikan contoh berikut:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(3, 'live', 'Rick'));
Tanda tanya dalam kueri secara otomatis diganti dengan nilai dalam larik di parameter kedua dari fungsi kueri.
dan http://ellislab.com/forums/viewthread/105112/#528915
Meskipun CI tidak mendukung pernyataan yang disiapkan, CI mendukung Query Bindings. Dengan pernyataan yang disiapkan, Anda harus memanggil beberapa jenis fungsi prepare() dan kemudian beberapa jenis fungsi execute(). Dengan binding kueri, Anda hanya perlu memanggil satu fungsi dan pada dasarnya melakukan hal yang sama. Karena itu, saya lebih menyukai binding kueri daripada pernyataan yang disiapkan.
Di sidenote, mengubah ?
ke :foo
hanya berubah dari binding yang tidak disebutkan namanya menjadi bernama (yang tampaknya juga tidak didukung oleh CI). Hanya karena Anda menggunakan salah satu atau tidak berarti Anda sedang mempersiapkan pernyataan.