Codeigniter转义 - 来自数据库的unescape数据

时间:2012-04-11 14:21:38

标签: database codeigniter quotes

请不要认为通过阅读问题来回答否定问题。 因为我搜索了很多,而且我知道这个问题到处都被问过很多但是我不知道我没有得到适当的解决方案。

我希望数据在存储数据库和从数据库检索时是安全的(来自sql注入和xss)。

我的CI配置设置:

$config['global_xss_filtering'] = FALSE;

我的数据库添加查询:

$add_data['name'] = $this->db->escape($name);
.....
.....
$this->db->insert($this->table, $add_data);

我的数据库查看查询:

$q =$this->db->select($this->fld);
$q = $this->db->where("$this->cond");
$q = $this->db->order_by($this->sortid, $this->sortby);
$q = $this->db->limit( $this->limit,$this->offset);
$ret=$q->get()->result_array();

我的问题是:

  

DB值有单引号:例如如果$ name = abc在DB中   :'abc'

问题:

  

如果我想显示引用的数据如何在没有引号的情况下显示它们。

加号

  

如何防止在数据库中添加单引号。

2 个答案:

答案 0 :(得分:2)

使用CI insert时,您无需转义数据。活动记录会自动为您转义值。在您的示例中:

/* $add_data['name'] = $this->db->escape($name); - not need */
$add_data['name'] = $name;
.....
.....
$this->db->insert($this->table, $add_data);

阅读 CI Active Records 。每个函数都有解释。还有哪个需要转义,哪个不是

答案 1 :(得分:0)

活动记录会自动转义值。并且为了显示没有引号的字符串,你可以使用字符串帮助器。

$string="Joe's \"dinner\"";
$string=strip_quotes($string); //results in "Joes dinner"

它位于User's Guide