PHP帮助解释函数

时间:2011-09-19 20:19:58

标签: php sql

 function sql_like_expression($expression)
 {
     $expression = utf8_str_replace(array('_', '%'), array("\_", "\%"), $expression);
     $expression = utf8_str_replace(array(chr(0) . "\_", chr(0) . "\%"), array('_', '%'), $expression);

     return $this->_sql_like_expression('LIKE \'' . $this->sql_escape($expression) . '\'');
 }

我不确定这个功能是做什么的。从我所看到的情况来看,我认为它会用_取代\_,但我不确定这些是不是正在发生的事情。为什么array%是什么意思? 欢呼声。

3 个答案:

答案 0 :(得分:4)

在SQL LIKE表达式中,_表示任何单个字符%表示任何字符

  • 第一行转义 %_字符以删除其特殊含义(在\之前添加%删除其特殊含义)
  • 第二行取消了以NULL字节(char(0))开头的_和{{1}}个字符。

在str_replace中使用数组允许一次进行多次替换。

答案 1 :(得分:2)

%和_在SQL语句中使用,它们是通配符。 %匹配任何字符集,而_匹配单个字符。

拥有\%意味着它不会匹配任何字符,它会逃脱它,因此它现在是一个文字,同样适用于_。

答案 2 :(得分:2)

这是一种非常狡猾且不可靠的SQL转义方法。找到那些写下来的人,然后用一条粘糊糊的鱼将它们打了几个小时。

简而言之,它正在以1:1的方式替换两个阵列:

_ -> \_
% => \%

然后与字符串相同,其中(由于某种原因)在原始字符串的临界值之前有一个NULL char。