困扰了很久的模糊查询问题

westiger 2018-04-10 09:17:00
比如说搜索SA-PJ1234-#-12H1301,在php用like模糊查询数据库,发现老是查不到。读取搜索字符串时发现,搜索的字符串变成了SA-PJ1234-,为何#之后的内容被截断?
前台输入:<input name="code" type='text' placeholder="请输入编号">
读取数据:$code = trim($_GET["code"]);
查询数据:$sql = "select * from tgs_code where code like '%$code%' limit 1";
...全文
385 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sql 中 # 是注释符号,加个反斜杠 \ 转义一下试试
德忱 2018-04-12
  • 打赏
  • 举报
回复
引用 2 楼 surl61240 的回复:
在你构造查询语句的时候需要对特殊字符,如#&|\等字符进行处理,在你读取到的字符里面查找这些特殊字符,然后在这些特殊字符前面增加转义符号\即可
言之有理
o前男友o 2018-04-11
  • 打赏
  • 举报
回复
$sql = "select * from tgs_code where code like '%{$code}%' limit 1"; 试试这样呢
westiger 2018-04-10
  • 打赏
  • 举报
回复
刚才又测试了一下发现#&|这三个符号都会出现这个问题,其它诸如!@¥%……*()<>/?都正常,如果是+则会中间空一格,不知道是什么情况。
糖炒唐朝栗子 2018-04-10
  • 打赏
  • 举报
回复

用引号引起来应该是没问题的。
糖炒唐朝栗子 2018-04-10
  • 打赏
  • 举报
回复
‘&’和‘|’是位运算符,感觉应该会对查询有影响,不应该截断。
糖炒唐朝栗子 2018-04-10
  • 打赏
  • 举报
回复
mysql 中#是注释符号,#后的东西都是作为注释的内容,不会做解析。#和|应该也是有相应的作用,但是具体不是很清楚了。有知道的大神可以科普下。
surl61240 2018-04-10
  • 打赏
  • 举报
回复
或者换另外一种效率更高的方法: 读取数据:$code = trim($_GET["code"]); 查询数据:$sql = "select * from tgs_code where locate('$code',code)>0 limit 1";
surl61240 2018-04-10
  • 打赏
  • 举报
回复
在你构造查询语句的时候需要对特殊字符,如#&|\等字符进行处理,在你读取到的字符里面查找这些特殊字符,然后在这些特殊字符前面增加转义符号\即可

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧