PHP搜索多个表

时间:2015-04-18 12:15:53

标签: php mysql

表:tblBuilding
buildingid .......... buildingname ................ buildinglocation
1 ......... ................诊所....................... ........爱丽丝路
2 ......... ................冬季购物中心..................... Damansara
3 ......... ................教师....................... ....北京路 4 ......... ................ Star Mall ...................... ...... Pavillion


表:tblperson
personid ....... personname .................. personno .......... personbuilding < BR /> 1 .................... Andrew Clarkson博士...... 0312883232 .......诊所
2 .................... Antoine先生...................... 0825112315 .... ...冬季商城
3 .................... Emmy Dahliana夫人....... 0112357125 .......教师们 4 ....................贾斯汀安德鲁教授......... 0524128866 .......教职员工 5 .................... Sanila博士....................... 0225113070 ...... ......诊所

如果我输入关键字 Andrew ,我的预期结果为
ID:1个
人名:Andrew Clarkson博士 personno:0312883232
人员:诊所
建筑物位置:爱丽丝路
如果我输入关键字 Star Mall ,我的预期结果为
buildingid:4
buildingname:Star Mall
建筑物位置:Pavillion

我的代码:

if (isset($_GET["FirstName"])) 
{
    $FirstName = $_GET['FirstName'];
}

$query= "(SELECT * FROM tblBuilding where buildingname like '%".$FirstName."%' OR buildinglocation '%".$FirstName."%') UNION (SELECT * FROM tblperson where personname like '%".$FirstName."%' OR personno '%".$FirstName."%' or personbuilding (SELECT * FROM tblBuilding where buildingname like '%".$FirstName."%' OR buildinglocation '%".$FirstName."%')) "

mysql_query($query);

此查询返回空结果。错误如下所示。

   Warning: mysql_num_rows() expects parameter 1 to be resource,
   boolean given in C:\xampp\htdocs\dbinfo\getDetails.php on line 68 {"success":0,"message":"Keyword(s) not found"}

2 个答案:

答案 0 :(得分:1)

UNION运算符使用相同的列名。您应该为具有相同名称的两个表的列名别名。它应该工作。

答案 1 :(得分:0)

我认为现在已经修复了。尝试一下:)注意:请注意,UNION中的每个SELECT语句必须具有相同的列数。列还必须具有类似的数据类型。此外,每个SELECT语句中的列必须具有相同的顺序。

if (isset($_GET["FirstName"])) 
{
$FirstName = $_GET['FirstName'];
}

$query= "(SELECT * FROM tblBuilding where buildingname like '%".$FirstName."%' OR buildinglocation LIKE '%".$FirstName."%' ) UNION (SELECT * FROM tblperson where personname LIKE '%". $FirstName ."%' OR personno '%".$FirstName."%' or personbuilding (SELECT * FROM tblBuilding where buildingname LIKE '%".$FirstName."%' OR buildinglocation '%".$FirstName."%')) ";

 mysql_query($query);