比如说搜索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";

解决方案 »

  1.   

    刚才又测试了一下发现#&|这三个符号都会出现这个问题,其它诸如!@¥%……*()<>/?都正常,如果是+则会中间空一格,不知道是什么情况。
      

  2.   

    在你构造查询语句的时候需要对特殊字符,如#&|\等字符进行处理,在你读取到的字符里面查找这些特殊字符,然后在这些特殊字符前面增加转义符号\即可
      

  3.   

    或者换另外一种效率更高的方法:读取数据:$code = trim($_GET["code"]);
    查询数据:$sql = "select * from tgs_code where locate('$code',code)>0 limit 1";
      

  4.   

    mysql 中#是注释符号,#后的东西都是作为注释的内容,不会做解析。#和|应该也是有相应的作用,但是具体不是很清楚了。有知道的大神可以科普下。
      

  5.   

    ‘&’和‘|’是位运算符,感觉应该会对查询有影响,不应该截断。
      

  6.   

    $sql = "select * from tgs_code where code like '%{$code}%' limit 1";
    试试这样呢
      

  7.   

    sql 中 # 是注释符号,加个反斜杠 \ 转义一下试试