问题描述:博主在测试数据库模糊查询功能时发现,查询内容包括 下划线’_’,百分号’%’,反斜杠’\’等特殊符号时会出现错误的查询结果,下划线,百分号会被当作通配符,反斜杠会被当作转义符。

博主想到可以在后台对接收的数据进行转义。但是查百度找到的函数都不能用
,所以想要自己写个函数进行转义,其实就是在百分号’%’,下划线’_’等字符的前面加上转义字符’\’。

下面是博主自己写的函数:

//转义函数
    function transfer($string){
        $string = str_replace('%','\%',$string);
        $string = str_replace('_','\_',$string);
        $string = str_replace('[','\[',$string);
        $string = str_replace(']','\]',$string);
        $string = str_replace('\\','\\\\\\a',$string);
        $string = str_replace('\a','\\',$string);
        return $string;

用转义后的字符替换需要转义的字符就可以了。

博主又发现反斜杠转义时有些麻烦,经过测试发现正确的查询反斜杠’\’的方法是查询’\\’ ,而直接转义时无法转义’\’为’\\’,所以就想到了上面的方法。

我们经常使用like语句配合%%通配符来进行模糊查询,那么如果字段内容本身有%,而你要查询包有%的记录怎么办呢怎么办呢。假设字段是title,那么下面的语句可以吗? select * from table where title like “%%%”; 如果你试过就知道,肯定不行的,那么正确的写法是怎样的呢? 我们应该对%符号进行转义: select * from table wher
10件在PHP7不要做的事情 1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现。 2. 不要编写垃圾代码 这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会隐藏你的一些问题。不要仅仅满足于你的站点速度,因...