select * from product where model like '%$key%'
这是我写的一条查询语句,当我$key='a' 的时候,查询怎么会中文的查询结果,只要包含‘工’字的结果都会显示出来!
然后我把语句改成这样:
$key = strtoupper($key);
select * from product where binary upper(model) like '%$key%'
然后再将$key='a'这样查询的中文不会显示出来,但像'sdf&fsd'这样的也会被显示出来!
我用的是UTF8,我觉得和编码的关系可能不大,我把查询的字串转换成二进制对比过,都是一样!
百思不得其解,望高人指点迷津!万分感谢!

解决方案 »

  1.   

    '%" . addslashes($keyword) . "%'
      

  2.   

    字符集问题 set names 一下,
      

  3.   

    set names utf8后乱码,addslashes($keyword)问题依旧!
      

  4.   

    补充:set names utf8后网页有部分乱码但乱码的都是另一个表的数据,和product没有关系,product显示正常,但问题依旧!
      

  5.   

    直接在数据库输入
    select * from product where model like '%a%' 
    看看结果如何
    肯定是在PHP出的毛病。
      

  6.   

    呵呵,这个早试过了!~
    select * from product where model like '%$key%' 
    这个可以搜索中文
    select * from product where binary model like '%$key%' 
    这个不可以搜索中文
    谁能解释这个,问题就解决了
    如果是编码问题,第一个应该就不能搜索才对呀!
      

  7.   

    编码问题,未必就不能搜索,也有被识别成错误字串的可能.但是,如果连ascii都不能正常搜索,那就是只能推测为数据库的问题。
    需要调整一下数据库。
      

  8.   

    ascii搜索只是除了会全部搜索出包含keyword的以外,还会多搜出一些包含中文的结果!