用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7475|回复: 7
收起左侧

[已解决] $this->db->escape怎么不起作用?

[复制链接]
发表于 2009-10-28 23:41:44 | 显示全部楼层 |阅读模式
$sql="select * from test where username='".$this->db->escape($username)."'";
上面这个sql加了$this->db->escape()和没加一样的效果但换成$this->db->escape_str()就OK,为什么?
 楼主| 发表于 2009-10-28 23:43:35 | 显示全部楼层
因为程序大多使用的是$this->db->query();
 楼主| 发表于 2009-10-28 23:50:56 | 显示全部楼层
$this->db->escape() 这个函数将会确定数据类型,以便仅对字符串类型数据进行转义。它将会自动增加单引号(single quotes)在数据的周围,所以你不能这样做:
$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
哪需要怎么做?
发表于 2009-10-28 23:59:51 | 显示全部楼层
function escape($str)
        {
                if (is_string($str))
                {
                        $str = "'".$this->escape_str($str)."'";
                }
 楼主| 发表于 2009-10-29 09:44:51 | 显示全部楼层
function escape($str)
        {
                if (is_string($str))
                {
                        $str = "'".$this->escape_str($str)."'";
                } ...
visvoy 发表于 2009-10-28 23:59



    哈意思
发表于 2009-10-29 10:09:29 | 显示全部楼层
他的意思是说 escape 如果传递的是字符串会自动调用 escape_str
楼主应该看一下源码就都解决了,很简单的源码。
发表于 2009-10-29 11:51:29 | 显示全部楼层
hex正解
 楼主| 发表于 2009-10-29 13:39:48 | 显示全部楼层
了解。

本版积分规则