php多表查询,这个是在一张表里的查询可以实现。求多表查询

现在是一个表,有字段,customQQ,customSHOP,mywanwgang等。现在我想把这张表进行复制,只把表名修改,假如为A表,B表,C表,里面的字段完全一样。... 现在是一个表,有字段,customQQ,customSHOP,mywanwgang等。现在我想把这张表进行复制,只把表名修改,假如为A表,B表,C表,里面的字段完全一样。请问,如果我再单独建立一个静态页面。只放一个搜索框,当我再搜索框里输入要搜索的内容时,点击搜索,会执行,从A,B,C,三张表里全部查询一样的数据,如果有,全部提出来,进行显示。如果没有,提示没有相关数据。求详细步骤,菜鸟,谢谢。
<style type="text/css"><!--.STYLE1 { font-size: x-large; color: #FF0000;}--></style><div align="center"> <h2 class="STYLE1">客户资料存储中心 </h2></div><div align="center"> <input name="search" type="text" id="search" size="35" align="left" /> <input type="submit" name="sub" value="搜索" align="right" /></div>

<?php
if(empty($_REQUEST['title'])){ exit("<script type='text/javascript'>location='index.php'</script>"); } /* 关键字 */ $keyword = trim($_REQUEST['title']); $str = ""; /* 搜索表名称 */ $arr = array("channel"=>'`title`,`content`',"news"=>'`news_title`,`content`',"products"=>'`p_name`,`content`'); foreach($arr as $key=>$value){ $row = explode(",",$value); $title = str_replace("`","",$row[0]); $content = str_replace("`","",$row[1]);
$sql_l = "SELECT * FROM ".$key." ";
for($i=0;$i<count($row);$i++){ $sql_l .= ( preg_match('/WHERE/i' , $sql_l ) ? ' or ': ' WHERE ' ).$row[$i]." like '%".$keyword."%' "; } $queryu = $sql->query($sql_l)or die(mysql_error()); while($site = $sql->assoc($queryu)){ $title2 = str_ireplace($keyword, "<font color='red'>".$keyword."</font>",$site[$title]); $content2 = str_ireplace($keyword, "<font color='red'>".$keyword."</font>", cut_str(strip_tags($site[$content]),180)); switch($key){ case 'channel': $href = "GroupCEO.php?pid=3&cid=".$site['id']; break; case 'news': $href = "Newslist.php?pid=4&xwid=".$site['id']; break; case 'products': $href = "product_read.php?pid=1&fid=".$site['fid']."&id=".$site['id']; break; }
$str .= '<p ><strong ><a href="'.$href.'">'.$title2.'</a></strong><br /> '.$content2.'</p> <div style=" border-bottom:#666 dashed 1px;height:1px;"></div>'; } } ?><?php if(empty($str)){ echo "<div style='margin:20px'>对不起!您搜索的内容不存在!</div>" ; }else{ echo $str; } ?>
请详细解答,谢谢
展开
 我来答
vaps2010
2012-12-14 · TA获得超过117个赞
知道小有建树答主
回答量:113
采纳率:100%
帮助的人:75.8万
展开全部
用左链接或者右链接(MYSQL),语法如下
select * from A left join B where someboolean。这样就会以A表为准获取数据,如果B木有,查询就为空,3表查询只需要再嵌套一个left join就行,还有一种查询语句是直接取表,语法如下:
select a.vapsec,a.com from A as a,B,C where a.aa=B.aa (and so on)这样也可以取得查询,后面跟查的条件即可,还有一种呢是使用子查询,比如having之类的,having效率较低,不用哈,语法:
select * from A where A.vapsec = (select x? from B ,C where ……)等等,语句很多,找个自己写着简单的写,能看懂的写,不会的追问,或者百度hi留言:vaps2010。
记得采纳,不采纳以后不回答你问题了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式