php中查询数据库含通配符时需要转义的问题

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

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

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

//转义函数
    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;
    }

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值