我知道已经提出并回答了这类问题,但我的问题有点不同。我有两个名为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;显示错误。请告诉我应该采用哪种方法?
答案 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)";