如何使用ajax和php从实时搜索中的多个表中获取数据

时间:2016-01-17 07:10:59

标签: php jquery mysql ajax

我知道已经提出并回答了这类问题,但我的问题有点不同。我有两个名为category和enterprises的表。 Onkeyup我想显示两个表中的记录,匹配​​在搜索框中输入的字符串。两个表都有相同的列名,从中可以显示记录。

我的HTML代码如下: -

<div id="search-div2">
<input type="text" id="search-box1"/>
<div id="suggesstion-box1"></div>    
</div>

Jquery代码是: -

$(document).ready(function(){
$("#search-box1").keyup(function(){
    $.ajax({
    type: "POST",
    url: "auto/data-fetch.php",
    data:'keyword='+$(this).val(),
    beforeSend: function(){
        $("#search-box1").css("background","whitesmoke url(auto/LoaderIcon.gif) no-repeat 560px","color","#000");
    },
    success: function(data){
        $("#suggesstion-box1").show();
        $("#suggesstion-box1").html(data);
        $("#search-box1").css("background","whitesmoke");
    }
    });
});
});

和data-fetch.php文件是: -

<?php
require_once("dbcontroller.php");
$db_handle = new DBController();
if(!empty($_POST["keyword"])) {
$query ="SELECT * FROM enterprises WHERE name like '"  .$_POST["keyword"]. "%' ORDER BY name";
$result = $db_handle->runQuery($query) or die(mysql_error());
if(!empty($result)) {
?>
<ul id="country-list" style="overflow-y: auto;height:210px;width:98%">
<?php
foreach($result as $country) {
?>
<li onClick="selectCountry1('<?php echo $country["name"]; ?>');"><?php echo $country["name"]; ?></li>
<?php } ?>
</ul>
<?php } 
else 
{?>
<ul id="country-list"> 
 <li>Sorry, no results found</li>
</ul>
<?php
}
} 
?>

当我尝试仅从企业表中获取数据时,上面的代码工作正常,但是当我尝试从两个表中获取数据时,它无法正常工作。我还发布了两个表格结构的截图供参考。Screenshot of category table Screenshot of enterprises table

我尝试过UNION但是&#34;使用过的SELECT语句有不同数量的列&#34;显示错误。请告诉我应该采用哪种方法?

2 个答案:

答案 0 :(得分:0)

您可以使用并集从这样的不同表中获取数据

select * FROM enterprises WHERE name like '"  .$_POST["keyword"]. "%' ORDER BY name
union
select * FROM category WHERE name like '"  .$_POST["keyword"]. "%' ORDER BY name

答案 1 :(得分:-1)

您可以使用UNION从两个不同的表中获取数据。 php查询在这里

$query ="(SELECT * FROM enterprises WHERE name like '"
    .$_POST["keyword"]. "%' ORDER BY name) UNION (SELECT * FROM category WHERE name LIKE '"  
    .$_POST["keyword"]. "%' ORDER BY name)";