sql的like语言如何过滤特殊字符?

#1 xd04053045

写查询的时候有这样一个条件$name = $this->spArgs('name');
$condition = "name LIKE '%$name%'",
$users = spClass('mod_user')->findAll($condition);

看到说是自己写查询语句的时候需要使用escape过滤先,可是我过滤出来的内容会自动加上'
比如 name为zhang那么$name会为 'zhang'了。在LIKE就多了''这个了?
请问这个如何处理的呢?

2010-09-17 15:25:29

#2 jake

自动带上单引号是为了防止SQL注入,这个是比较强制的。

楼主的情况,可以这样解决
$name = $u->escape($this->spArgs('name'));
$name = trim($name,"'"); // trim掉前后的单引号
$condition = "name LIKE '%$name%'";

2010-09-17 15:59:25