当前位置:编程学习 > php >>

php 复杂点的搜索功能 问题

php 想做一个搜索功能,用来作模糊查询。 我假设输入的是两个个关键字,那要求把包含其中一个关键字的以及同时包含两个关键字的内容都被查询到,模糊查询的sql语句为 $sql="SELECT * FROM article where article_title like '%$k[0]%' or article_title like '%$k[1]%'"; 在这sql语句前面,我使用explode来分开空格和关键字,$k=explode(" ",$_GET[key]); 这里就出现个问题,如果搜索时候输入一个关键字和一个空格,判断到的关键字就有两个,分别为空格和关键字。这样就会列出文章标题中含有空格的文章。 曾设法使用count($k)来判断关键字数目,从而来控制sql语句,达到精确关键字数目的目的。 但是输入一个关键字和一个空格,count出来的关键字数目依然为2. 求这样的问题的解决办法。 能不能把$k[i]=" "从$k数组中剔除? 或者有更好的解决办法,向大家求教了!!
追问:$k="";
if(empty($k)){echo "空";} 
else{echo "非空";}
$m=" ";
if(empty($m)){echo "空";} 
else{echo "非空";}
前面结果为空后面结果为非空,你试试看。 不能用empty来判断 " " 这样一个空格值。
不过可以用你的思路和你楼上的思路混合一下,把空格替换为"" 
但是真是很麻烦的一个事,程序员门不会这样写吧,估计是我思路有问题。
谢谢你帮我想。$array("","","","") or $array(" "," "," "," ")
echo count($array) ;都等于4 
所以你的办法行不通,并不能把这个参数从数组取消。
还有就是,你替换自后,所有的文章标题都会从数据库返回。
谢谢你的回答,期待和你继续探讨
答案:也就是说当有空格和关键字的时候,不要空格对吧
那就判断一下
if(!empty($k[0]) && !empty($k[1])){  如果它们两个都不为空再

         $sql="SELECT * FROM article where article_title like '%$k[0]%' or article_title like '%$k[1]%'";

}elseif(empty($k[0]) && !empty($k[1])){ 如果第一个为空,第二个不为空

          $sql="SELECT * FROM article where article_title like '%$k[1]%'";      

}elseif(!empty($k[0]) && empty($k[1])){ 如果第一个不为空,第二个为空
          $sql="SELECT * FROM article where article_title like '%$k[0]%'";      
}
这样应该可以了吧
其他:肯定能啦,直接用str_replace(" ","",$str);不就去掉了吗? 

上一个:php写了一个网页,每个注册会员看到的页面是一样的,给每个注册用户分配一个url id值
下一个:RewriteRule ^index.html$ index.php [L]什么意思

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,