2016-04-01 52 views
0

我想在兩張表中搜索。試過this但沒有奏效。我得到錯誤 「未知的列...」mySQL:如何搜索數據庫中的多個表?

HTML:

<form method="post" 
<input type="text" name="search_keyword"> 
<input type="submit" name="button_search"> 
</form> 

MYSQL SELECT和PHP:

if(isset($_POST['button_search'])) 
    { 
     $search_keyword = $_POST['search_keyword']; 

     $select = mysql_query("SELECT * from table_1 WHERE match(name_1) against ($search_keyword) 
     union all SELECT * from table_2 WHERE match(name_2) against ($search_keyword)"); 
     while($row = mysql_fetch_array($select)) 
     { 
     echo $row['question']; 
     echo $row['category_name']; 
     } 
    } 

表:

例如:

表1:

表名:TABLE_1

值(表1):

+-------+-------------+ 
| id_1 | name_1 | 
+-------+-------------+ 
| 1  | Phinoy  | 
| 2  | Go   | 
+-------+-------------+ 

表2:

表名:TABLE_2

個值:

+-------+-------------+ 
| id_2 | name_2 | 
+-------+-------------+ 
| 1  | Gi  | 
| 2  | Phinas  | 
+-------+-------------+ 

如果我搜索 「P」 或 「PH」,它會顯示值 「Phinoy和Phinas」。

+0

要顯示「Phinoy和Phinas」的搜索結果或自動建議,而盒子 –

+0

自動建議類型。 –

+0

可能的重複[here](http://stackoverflow.com/questions/394041/mysql-how-to-search-multiple-tables-for-a-string-existing-in-any-column)回答如下 – roullie

回答

1

好吧。首先,您需要使用INNER JOIN來同時比較兩個表。在這段代碼中,我們連接了表1和表2的結果,然後調用table_1並使用INNER JOIN,我們將比較table_2,如果在table_1中有任何結果LIKE table_2,並且只發生在列名稱1和名稱2。

<?php 
    $query = "SELECT 
    CONCAT(table_1.name_1,' and ',table_2.name_2) 
    FROM table_1 INNER JOIN table_2 
    ON table_1.name_1 LIKE table_2.name_2"; 
    mysql_query($query); 
?>