当前位置:首页 » 编程语言 » php条件查询

php条件查询

发布时间: 2022-05-16 14:27:13

php多条件复合查询

在我们的网站设计过程中,经常会用到多条件查询,本文的源码是一个二手房屋查询的例子。在本例中,我们要实现能够通过地理位置,物业类型,房屋价格,房屋面积及信息发布日期等多个条件查询到客户所需的资料。
查询文件(search.php)
一、生成查询语句:
<?
$conn=mysql_connect("localhost","root","");
$db=mysql_select_db("lingyun");
$query="select * from message where tradetype='".$tradetype."'"; //交易类型,如出租,出售
$SQL=$SQL . "wuye='" . $wuye . "'";
if($housetype!="不限"){
$query.=" && housetype='".$housetype."'"; //房屋类型,如二室一厅,三室二厅
}
if($degree!="不限"){
$query.=" && degree='".$degree."'"; //新旧程度
}
if($wuye!="不限"){
$query.=" && wuye='".$wuye."'"; //物业类型 如住房,商铺
}
if($price2!=""){
switch($price1){
case "大于":
$query.=" && price>'".$price2."'"; //价格
break;
case "等于":
$query.=" && price='".$price2."'";
break;
case "小于":
$query.=" && price<'".$price2."'";
break;
}
}
if($area2!=""){
switch($area1){
case "大于":
$query.=" && area>'".$area2."'"; //面积
break;
case "等于":
$query.=" && area='".$area2."'";
break;
case "小于":
$query.=" && area<'".$area2."'";
break;
}
}
switch($pubdate){ //发布日期
case "本星期内":
$query.=" && TO_DAYS(NOW()) - TO_DAYS(date)<=7";
break;
case "一个月内":
$query.=" && TO_DAYS(NOW()) - TO_DAYS(date)<=30";
break;
case "三个月内":
$query.=" && TO_DAYS(NOW()) - TO_DAYS(date)<=91";
break;
case "六个月内":
$query.=" && TO_DAYS(NOW()) - TO_DAYS(date)<=183";
break;
}
if($address!=""){
$query.=" && address like '%$address%'"; //地址
}
if(!$page){
$page=1;
}
?>
二、输出查询结果:
<?php
if ($page){
$page_size=20;
$result=mysql_query($query);
#$message_count=mysql_result($result,0,"total");
$message_count=10;
$page_count=ceil($message_count/$page_size);
$offset=($page-1)*$page_size;
$query=$query." order by date desc limit $offset, $page_size";
$result=mysql_query($query);
if($result){
$rows=mysql_num_rows($result);
if($rows!=0){
while($myrow=mysql_fetch_array($result)){
echo "<tr>";
echo "<td width='15' height='12'><img src='image/home2.gif' width='14' height='14'></td>";
echo "<td width='540' height='12'>$myrow[id] $myrow[tradetype] $myrow[address] $myrow[wuye]($myrow[housetype])<font style='font-size:9pt'>[$myrow[date]]</font>";
echo "</td>";
echo "<td width='75' height='12'><a href='view_d.php?code=$myrow[code]' target='_blank'>详细内容</a></td>";
echo "</tr>";
}
}
else echo "<tr><td><div align='center'><img src='image/sorry.gif'><br><br>没有找到满足你条件的记录</div></td></tr>";
}
$prev_page=$page-1;
$next_page=$page+1;
echo "<div align='center'>";
echo " 第".$page."/".$page_count."页 ";
if ($page<=1){
echo "|第一页|";
}
else{
echo "<a href='$PATH_INFO?page=1'>|第一页|</a>";
}
echo " ";
if ($prev_page<1){
echo "|上一页|";
}
else{
echo "<a href='$PATH_INFO?page=$prev_page'>|上一页|</a>";
}
echo " ";
if ($next_page>$page_count){
echo "|下一页|";
}
else{
echo "<a href='$PATH_INFO?page=$next_page'>|下一页|</a>";
}
echo " ";
if ($page>=$page_count){
echo "|最后一页|";
}
else{
echo "<a href='$PATH_INFO?page=$page_count'>|最后一页|</a>";
}
echo "</div>";
}
else{
echo "<p align='center'>现在还没有房屋租赁信息!</p>";
}
echo "<hr width="100%" size="1">";
?>
</table>

㈡ php 条件查询问题

//建议先输出echo $user;进行调试
如果$user没有显示则SQL语句编程 select * from userinfo where name = '' 是一个空语句。则不会有任何数据返回。建议检查$user输出值
另外。请检查数据库中相应的name的字段下 是否含有数据。
可以将返回结果以print_r()函数展示出来。如
print_r($row);
另外,看一下你的编码格式与页面是否统一。换一下编码格式再试。
希望能帮到你

㈢ php 根据条件查询一条数据 还有查询所有的数据怎么弄。。。才学PHP

$query=mysql_query("SELECT * FROM userinfo WHERE id='$snum'");
改成
$query=mysql_query("SELECT * FROM userinfo");
就是所有的了
如果想约束
$query=mysql_query("SELECT * FROM userinfo limit 0,20“);
前 面 第1 到20条

㈣ php 条件查询

mysql_fetch_array() 提供的参数不是有效的mysql数据源
也就是说你的mysql_fetch_array()括号里面的你执行的query不正确
你先检查一下,先别着别mysql_query()
直接把sql语句echo出来,再看看有没有什么错,或直接用mysql直接执行一下试试

㈤ PHP中关于查询多个条件的代码

先向大家说明需求:按照系统的要求,将通过部门名称、员工姓名、PC名称、IP地址等等字段来进行组合查询从而得到想要的数据结果。那么,为了简单起见,我们用两个条件(部门名称、员工姓名)的组合查询来向大家说明这一技术技巧。当只输入部门名而员工姓名为空值时,那么部门内所有员工信息将被呈现,只有当同时限制部门与员工姓名时,才能查询出唯一信息。

那就让我们开始。

首先建立查询页面search.php,不同于上次单一条件查询,这次需要两个条件的组合进行查询。

<html>
<body>
<h3>查询</h3>
<form action="search_result.php" method="POST">
部门名称:<input type="text" size=25 name="depart" value=""> <br><br>
员工姓名: <input type="text" size=25 name="ename" value=""> <br><br>
<input type="submit" name="提交" value="提交">
</form>
</body>
</html>
和上次一样,我们将depart与ename的值通过Post的方法传递给search_result.php文件。

然后便到了这次主题的关键,search_result.php文件如何接受这两个参数值,并判断当其中一个字段为空值时,如何将其排除查询条件。

怎么理解上面这句话,举例子来说,如果我们单纯地将接收参数的查询语句写成 select * from info where depart='部门值参数' and ename='员工姓名参数' 的话,那么如果其中一个参数为空时我们就将得到 select * from info where depart='技术部' and ename='' ,显然,这样的查询很有可能返回空的结果,因为这句查询语句的意思就是,查询所有技术部没有姓名的人的数据,这不是很荒唐么,倒过来如果是 select * from info where depart='' and ename='sunec' ,那么它的意思就是查询员工姓名为sunec但是不属于任何部门的人,那自然也是查询不到结果的。

正确的做法应该是,在查询语句中过滤掉那个为空值的的参数。比如,当输入部门名时应该得到 select * from info where depart='技术部' 。这样,查询语句的意思就变成查询所有部门为技术部员工的信息了,这就是了。
<?php
$link =mysql_connect("localhost","root","管理员密码");
mysql_select_db("infosystem", $link);
?>

<?php

//注释1-----------------------------
$depart=$_POST["depart"];
$ename=$_POST["ename"];

//注释2------------------------
if($depart != null){
$a = " and depart like '%$depart%'";}

if($ename != null){
$b = " and ename like '%$ename%'";}

//注释3---www.51qgj.com-----
$q = "SELECT * FROM info where (1=1)";
$q .=$a;
$q .=$b;

//注释4---www.weiyin8.com-------------
mysql_query("SET NAMES GB2312");
$rs = mysql_query($q, $link);
echo "<table>";
echo "<tr><td>部门</td><td>员工姓名</td></tr>";
while($row = mysql_fetch_object($rs)) echo "<tr><td>$row->depart</td><td>$row->ename</td></tr>";
echo "</table>";

mysql_close($link);

?>
注释1:接收search.php通过post传递出的参数,把两个参数分别存储入变量:depart和ename。

注释2:判断参数是否为空,如果为空,不作任何操作。如果有参数传出,则生成相应SQL语句。

注释3:用追加的方法生成SQL语句。

注释4:生成数据集,显示数据,最后关闭数据库连接。

㈥ php数组如何按条件查询

算法如novice_pegasus的,但是完整一些该是:

foreach($array as $each){
if($each<10){//小于10的归集一个数组
$newarray[0][] = $each;
}elseif($each>=10 && $each<20){//10到20之间的归集一个数组
$newarray[1][] = $each;
}
else//大于20的归集一个数组
$newarray[2][] = $each;
}

print_r($newarray);

㈦ 条件查询PHP语句,

假如:
你的查询框是 <input type="text" id="t" value="" name="t"/>
确定按钮<input type="button" onclick="window.open('a.php?t=' + document.getElementById('t').value)" value="确定" />

a.php 连接数据库后执行 $result = mysql_query("select * from 数据表 where id like '%" .$_GET['t']."%'");
就ok了 当然页面你自己定不一定要php
能明白么?

㈧ php多条件查询问题,怎么过滤空值

是的正如你所说有两种解决方案,第一种是采用PHP的方式,先判断数据的合法性,比如是否提交了空值(推荐使用,没有垃圾数据);第二种不做任何判断,空值也能提交到数据库,只是在SQL查询时过滤空值数据(不推荐使用,有垃圾数据)。


解决方案1(通过PHP过滤空值数据):

if($_POST['字段']=='')exit('<scripttype="text/javascript">alert("数据不合法!");history.back();</script>');//依此类推,逐一判断表单$_POST数据


解决方案2(通过SQL查询来过滤空值数据):

SELECT`字段名`FROM`表名`WHERE`字段1`NOTIN('',NULL)AND`字段2`NOTIN('',NULL)...;


以上就是两种解决方案,我推荐两种方案组合使用,这样确保万无一失,如有问题欢迎追问~

㈨ php做条件查询时的分页传值问题

你这程序做得真不错,但是还是乱啊,我测试都没办法测试。提出个问题: $sel=$_POST['select'];
$sel2=$_POST['select2'];
你这样接收了两个变量,你这两个变量在每次刷新页数输出查询结果时,到底如何传递的 ?我发现你根本没有传递这两个变量;你测试下: $sel=$_POST['select'];
$sel2=$_POST['select2'];echo '<br/>$sel'.$sel.'<br/>';echo '$sel2'.$sel2.'<br/>'; 建议:一开始使用post,已经输入后使用get,该select与select2通过html传输。再则,你的查询条件:年代,类别。(我不知道这两个是不是查询条件,看不出来。。。。)是如何输入的?等你说明下你到底想实现什么样的功能再贴上来吧哥哥。。。。。我帮你改了下,不知道能不能运行,自己测试下吧: <?php

include("conn.php");

if(isset($_POST['select']))//这里修改下
$sel=$_POST['select'];//这里修改下
else//这里修改下
$sel = $_GET['select'];//这里修改下
if(isset($_POST['select2']))//这里修改下
$sel2=$_POST['select2'];//这里修改下
else//这里修改下
$sel2 = $_GET['select2'];//这里修改下
if($sel=='' and $sel2=='')//这里修改下
$sql="select * from test";//这里修改下
elseif($sel!='' and $sel2=='')//这里修改下
$sql="select * from test where leibie like '%$sel%'";
elseif($sel=='' and $sel2!='')//这里修改下
$sql="select * from test where niandai like '%$sel2%'";
else
$sql="select * from test where leibie like '%$sel%' and niandai like '%$sel2%' ";
$result=mysql_query($sql);
$total=mysql_num_rows($result);
include("pageft.php");
pageft($total,10);
$info=mysql_query("$sql limit $firstcount,$displaypg");
if(!$info)
echo '<font size=6 color=red ><p align="center">没有您所要查找的内容,请重新查找!</p></font>';

?> <table width="655" height="40" border="0" align="center">
<tr>
<td width="680" align="right"><span class="STYLE5 STYLE7"><?php if($info) echo $pagenav;?>
</span></td>
</tr>
</table>
<table width="847" height="48" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000">
<tr>
<td width="86" align="center"><span class="STYLE1 STYLE8">名称</span></td>
<td width="85" align="center"><span class="STYLE1 STYLE9">年代</span></td>
<td width="83" align="center"><span class="STYLE1 STYLE8">类别</span></td>
<td width="495" align="center"><span class="STYLE1 STYLE13 STYLE11">文物简介</span></td>
<td width="86" align="center"><span class="STYLE1 STYLE11 STYLE13">图片</span></td>
</tr>
</table>
<?php
if($info)
while($row=mysql_fetch_array($info)){
$m=$m+1;
?>
<table width="844" height="51" border="1" align="center" cellspacing="0">
<tr>
<td width="86" align="center"><?php echo $m,"-",$row[name_db];?></td>
<td width="83" align="center"><?php echo $row[niandai];?></td>
<td width="81" align="center"><?php echo $row[leibie];?></td>
<td width="502" align="left"><?php echo $row[remark];?></td>
<td width="80" align="center"><a href="../images/<?php echo $row[image_db];?> "target="_blank"><img src="../images/<?php echo $row [image_db];?>"width='80' height='80' /></td>
</tr>
</table>
<?php } ; ?>
<table width="838" height="75" border="0" align="center">
<tr>
<td width="824" align="center" class="STYLE5 STYLE7"> <?php if($info) echo $pagenav;?></td>
</tr>
</table></body>
</html>
下面的是分页代码<?php
//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
if(!function_exists(pageft)){
//定义函数pageft(),三个参数的含义为:
//$totle:信息总数;
//$displaypg:每页显示信息数
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
//默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
function pageft($totle,$displaypg=10,$url=''){//定义几个全局变量:
//$page:当前页码;
//$firstcount:(数据库)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
global $m,$page,$firstcount,$pagenav,$_SERVER;//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
$GLOBALS["displaypg"]=$displaypg;if(!$page) $page=1;
//如果$url使用默认,即空值,则赋值为本页URL:
if(!$url){ $url=$_SERVER["REQUEST_URI"];}
//URL分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //单独取出URL的查询字串
if($url_query){
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
//这里用到了正则表达式
$url_query=ereg_replace("(^|&)page=$page","",$url_query);//将处理后的URL的查询字串替换原来的URL的查询字串:
$url=str_replace($parse_url["query"],$url_query,$url);//在URL后加page查询信息,但待赋值:
if($url_query)
$url.="&page"; else $url.="page";
}else {
$url.="?page";
}
$lastpg=ceil($totle/$displaypg); //最后页,也是总页数
$page=min($lastpg,$page);
$prepg=$page-1; //上一页
$nextpg=($page==$lastpg ? 0 : $page+1); //下一页$firstcount=($page-1)*$displaypg;//开始分页导航条代码:
$m=$firstcount;
$pagenav="显示第 <b>".($totle?($firstcount+1):0)."</b>-<b>".min($firstcount+$displaypg,$totle)."</b> 条记录,
共 $totle 条记录<br>";//如果只有一页则跳出函数:
if($lastpg<=1) return false;
echo '<br/>$url'.$url.'<br/>';
if($prepg) $pagenav.=" <a href='$url=1&select=$sel&select2=$sel2'>首页</a> "; else $pagenav.="首页 ";//这里修改下
if($prepg) $pagenav.=" <a href='$url=$prepg&select=$sel&select2=$sel2'>上一页</a> "; else $pagenav.="上一页 ";//这里修改下
if($nextpg) $pagenav.=" <a href='$url=$nextpg&select=$sel&select2=$sel2'>下一页</a> "; else $pagenav.="下一页 ";//这里修改下
if($nextpg) $pagenav.=" <a href='$url=$lastpg&select=$sel&select2=$sel2'>末页</a> "; else $pagenav.="末页 ";//这里修改下//下拉跳转列表,循环列出所有页码:
$pagenav.="转<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value&select=$sel&select2=$sel2'>\n";//这里修改下
for($i=1;$i<=$lastpg;$i++){
if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
else $pagenav.="<option value='$i'>$i</option>\n";
}
$pagenav.="</select> 页,共 $lastpg 页";
}
}
?>

热点内容
优化算法pdf 发布:2024-05-03 14:18:10 浏览:291
python算法书 发布:2024-05-03 14:14:25 浏览:736
方舟怎么加入服务器闪退 发布:2024-05-03 14:05:27 浏览:491
安卓心跳怎么打出来 发布:2024-05-03 13:59:23 浏览:100
存储标准性 发布:2024-05-03 13:37:07 浏览:416
液碱存储 发布:2024-05-03 13:21:13 浏览:156
linux如何改配置文件 发布:2024-05-03 13:00:54 浏览:31
哪个安卓模拟器老爷机带得动 发布:2024-05-03 13:00:49 浏览:576
编程与实战 发布:2024-05-03 12:54:30 浏览:38
电脑开机有密码rpc服务器不可用 发布:2024-05-03 12:40:54 浏览:471