+ -
当前位置:首页 → 问答吧 → mysql写站内搜索问题 sql该怎么写?

mysql写站内搜索问题 sql该怎么写?

时间:2011-11-28

来源:互联网

共3个问题。
本来就2句SQL语句。但查询会重复出现结果,怎么过滤掉重复的啊?
比如查询 xxx zzz 第一条和第2条都匹配!结果导致重复!
还有如果数据是 DxxD CzzzC 不想匹配,只完全匹配xx zz 要怎么写SQL啊?
还有怎么不区分大小写查询?
下面全部代码。





<?php
if(@$_GET['serch']){
mysql_connect("localhost","heihei","123123");
mysql_select_db("news");  
mysql_query("set names 'utf-8'");
$_GET["serch"]=preg_replace("#^[\s]+#","",$_GET["serch"]); //去掉以空格开头的空格
$_GET["serch"]=preg_replace("#[\s]+$#","",$_GET["serch"]); //去掉以空格结尾的空格
$chaifen=explode(" ",$_GET["serch"]); //数据拆分

//print_r($chaifen);

echo count($chaifen);

if(count($chaifen==1)){
$danguanjianzi="SELECT * FROM `sjk` where `biaoti` like '%$_GET[serch]%'";
$danguanjianzi=mysql_query($danguanjianzi);
while($rr=mysql_fetch_array($danguanjianzi)){
$rr["biaoti"]=preg_replace("#($_GET[serch])#","<b>\\1</b>",$rr["biaoti"]);
echo $rr["biaoti"]."..........<br>";
}
}

if(count($chaifen)>1){
$sql="SELECT * FROM `sjk` where `biaoti` like '%$chaifen[0]%' and `biaoti` like '%$chaifen[1]%'";
$sql=mysql_query($sql);
while($r=mysql_fetch_array($sql)){
$r["biaoti"]=preg_replace("#($chaifen[0])#","<b>\\1</b>",$r["biaoti"]);
$r["biaoti"]=preg_replace("#($chaifen[1])#","<b>\\1</b>",$r["biaoti"]);
echo $r["biaoti"]."<br>";
}
}  
}
?>
<form action="" method="get">
  <input name="serch">
  <input type="submit" value="serch"/>
</form>

作者: woyaoainiya   发布时间: 2011-11-28

$_GET["serch"]=preg_replace("#^[\s]+#","",$_GET["serch"]); //去掉以空格开头的空格
$_GET["serch"]=preg_replace("#[\s]+$#","",$_GET["serch"]); //去掉以空格结尾的空格
$chaifen=explode(" ",$_GET["serch"]); //数据拆分

去除头尾空格用trim就可以了
$_GET["serch"] = trim($_GET["serch"]);

然后下面就不用判断数组个数了。
sql直接这么写。

$serch_sql = " AND LIKE '%" . str_replace(' ', "%' OR LIKE '%", $_GET["serch"]) . "%'";
$sql="SELECT * FROM `sjk` where `biaoti` WHERE 1" . $serch_sql;
$sql=mysql_query($sql);

作者: ci1699   发布时间: 2011-11-28

相关阅读 更多