CodeIgniter不支持预备语句。如果查看CI的Database类的源代码,您将看到它们仅通过用传递的数组中的数据替换问号来解析绑定:
- https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_driver.php#L874
它们仅支持使用未命名占位符的查询绑定。参见http://ellislab.com/preigniter/user-
guide/database/queries.html
查询绑定
通过使系统为您组合查询,绑定使您能够简化查询语法。考虑以下示例:
$sql = "SELECt * FROM some_table WHERe id = ? AND status = ? AND author= ?”;
$this->db->query($sql, array(3, ‘live’, ‘Rick’));查询中的问号会自动替换为查询函数第二个参数中数组中的值。
和http://ellislab.com/forums/viewthread/105112/#528915
即使CI不支持预备语句,它也支持查询绑定。对于预处理语句,您必须调用某种类型的prepare()函数,然后调用某种类型的execute()函数。使用查询绑定,您只需要调用一个函数,基本上就可以完成相同的事情。因此,与准备好的语句相比,我更喜欢查询绑定。
在阿里纳斯,改变
?以
:foo仅仅从无名到名为绑定(CI显然不支持任何)改变。仅仅因为您使用其中之一或不代表您正在准备语句。



