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>
本来就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);
$_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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28