1

我最近才开始使用活动记录(在我刚刚编写手动查询之前,因为我已经习惯了它们)。

我正在查看 ion_auth 的代码,我看到在一些地方,即使使用了活动记录,字符串也被转义了,

IE

 ->where($this->identity_column, $this->db->escape_str($identity))
 ->where($this->tables['groups'].'.name', $this->db->escape_str($group))

问题是,我没有在使用过活动记录的任何地方逃脱,因为在文档中它说活动记录会自动转义字符串。

我的问题是,在使用活动记录时,在某些情况下应该转义字符串吗?

4

3 回答 3

5

来自 Codeigniter 用户指南:

除了简单之外,使用 Active Record功能的一个主要好处是它允许您创建独立于数据库的应用程序,因为查询语法是由每个数据库适配器生成的。它还允许更安全的查询,因为系统会自动转义这些值。

ion_auth 的创建者可能有特殊原因转义字符串,但如果您使用 Active Record,Codeigniter 会自动转义查询。

但是有些查询“看起来”像是 Active Record,需要转义。这是它们的列表,同样来自 Codeigniter 用户指南。

于 2012-10-29T19:37:24.673 回答
0

通常你可以让 codeigniter 处理它。在某些情况下,如果您正在使用活动记录构建更复杂的查询(例如:$this->db->where('(some sql where clause)')您可以使用 DB 库的转义方法。

于 2012-10-29T16:35:46.833 回答
0

不,没有必要使用转义。我尝试过使用不同格式的文本混合单引号和双引号以及一大堆html标签,一切都很好。

于 2012-10-30T05:10:48.030 回答