當前位置:首頁 » 編程語言 » 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 頁";
}
}
?>

熱點內容
配置好的主機怎麼賺錢 發布:2022-07-03 20:03:13 瀏覽:650
tlink管理員密碼是什麼 發布:2022-07-03 20:00:21 瀏覽:993
msvc編譯輸出路徑 發布:2022-07-03 20:00:08 瀏覽:44
二叉樹與演算法 發布:2022-07-03 19:58:38 瀏覽:828
存儲介質信息消除工具哪家便宜 發布:2022-07-03 19:58:25 瀏覽:911
如何檢驗內核是否編譯成功 發布:2022-07-03 19:57:20 瀏覽:293
如何快速處理腳本 發布:2022-07-03 19:57:13 瀏覽:508
iphone連接電腦伺服器出現問題 發布:2022-07-03 19:56:31 瀏覽:309
linux下查找文件夾 發布:2022-07-03 19:54:54 瀏覽:767
win7關閉文件夾聲音了 發布:2022-07-03 19:45:37 瀏覽:179