A. 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>
B. PHP数组查询
你这个数组是默认的数字索引模式,索引是从0开始计算的,你的问题可以使用array_search这个函数来查找对应的值是不是存在,如果存在返回所在索引,不存在返回false,例子:
<?php
$tian=array('','甲','乙','丙','丁','戊','己','庚','辛','壬','癸');
$key=array_search('辛',$tian);
if($key!==false)
echo'辛这个值在数组$tian中的索引是'.$key;
else
echo'辛这个值在数组$tian中不存在';
?>
C. php查询sqlserver多表数据并显示出来,麻烦各位大神给个例子参考参考,带个说明,谢谢
select * from dbo.sysobjects where [name]='blacklist'
意思是查询name为blacklist的表是否存在
D. PHP 下拉列表 动态查询,麻烦给个示例
HTML 类似这样<html>
<body>
<form>
<select name="cars" onchange="go(this)">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="audi">Audi</option>
<option value="fiat" selected="selected">请选择</option>
</select>
</form>
<script>function go(t){alert(t)}</script>
</body>
</html>
go后面加AJAX从PHP读数据吧,可以用$.ajax之类的,PHP $_REQUEST拿数据,处理,数据库搜索,再显示不就好了
E. php封装mysql联合查询和关联查询。 请写个例子。
有两个表,A表存储临时数据,B表存储永久数据,AB表有相同的id字段,为了区别A的叫gid,B的就叫id。
id都是唯一的。需要按照A表id的顺序读取A和B的所有数据。
查询语句:
$sqlt="select * FROM A LEFT JOIN B ON A.gid=B.id ORDER BY gid DESC ";
方法:
left join:联合两个表:条件是id相同,顺序按照A表排列。
F. php如何两个表联合查询
SELECT a.A表字段名, b.B表字段名 FROM A表名 a LEFT JOIN B表名 b WHERE 条件自己写,例如(a.字段名 != '' ) ON a.字段名 = b.字段名
这种联合查询的限制是ab2表必须有一个相同的关键字,且相等
G. PHP搜索怎么做
php中要查询mysql数据库中的内容必须先连接mysql数据库,然后再利用sql语句进行查询
SELECT 语句用于从数据库中选取所要搜索的数据。
具体用法为:
语句1:SELECT*FROMtable_name
解说:意思就是读取整个表table_name里面的数据显示出来
语句1:SELECT*FROMtable_nameWherex=1
解说:意思就是读取表table_name里面键名为:x值为:1的数据显示出来
Select 查询语句的例子
下面的例子选取存储在 "Persons" 表中的所有数据(* 字符选取表中所有数据):
<?php
$con=mysql_connect("localhost","peter","abc123");
if(!$con)
{
die('Couldnotconnect:'.mysql_error());
}
mysql_select_db("my_db",$con);
$result=mysql_query("SELECT*FROMPersons");
while($row=mysql_fetch_array($result))
{
echo$row['FirstName']."".$row['LastName'];
echo"<br/>";
}
mysql_close($con);
?>
上面这个例子在 $result 变量中存放由 mysql_query() 函数返回的数据。接下来,使用
mysql_fetch_array() 函数以数组的形式从记录集返回第一行。每个随后对 mysql_fetch_array()
函数的调用都会返回记录集中的下一行。 while loop 语句会循环记录集中的所有记录。为了输出每行的值,使用了 PHP 的 $row
变量 ($row['FirstName'] 和 $row['LastName'])。
以上代码的输出:
PeterGriffin
GlennQuagmire
H. 怎样试用PHP原生语句查询数据库
原生SQL查询有 query() 和 execute() 两个方法:
query():用于 SQL 查询操作,并返回符合查询条件的数据集
execute():更新和写入数据的 SQL 操作,返回影响的记录数
query()
query() 方法是用于 SQL 查询操作,和select()方法一样返回符合查询条件的数据集。
例子:
public function read(){
// 实例化一个空模型,没有对应任何数据表
$Dao = M();
//或者使用 $Dao = new Model();
$list = $Dao->query("select * from user where uid<5");
if($list){
$this->assign('list', $list );
$this->display();
} else {
$this->error($Dao->getError());
}
}
对于 query() 方法返回的数据集,跟 select() 一样,可以在模板里直接循环输出。
execute()
execute() 方法用于更新和写入数据的 SQL 操作(注:非查询操作,无返回数据集),返回影响的记录数。
例子:
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 实例化一个空模型,没有对应任何数据表
$Dao = M();
//或者使用 $Dao = new Model();
$num = $Dao->execute("update user set email = '[email protected]' where uid=3");
if($num){
echo '更新 ',$num,' 条记录。';
}else{
echo '无记录更新';
}
}
如果查询比较复杂或一些特殊的数据操作不能通过 ThinkPHP 内置的 ORM 和 ActiveRecord 模式实现时,就可以通过直接使用原生 SQL 查询来实现。
注意:以上都是 user 没有表前缀的例子,在查询语句中,查询的表应该写实际的表名字(包括前缀)。