2010-12-06 128 views
0

我試着創建一個查詢,它將使用一個關鍵字搜索四個不同的表格,以便將所有在該位置下列出的項目都帶入。PHP MYSQL在多個表中搜索相同的關鍵字

我有四個表 - 國家 - 國家 - 縣 - 城市

用於例如英國 - >英格蘭 - >西密德蘭 - >伯明翰

當西米德蘭茲我不會看到所有的項目,包括伯明翰,沃爾索爾下項目的用戶類型,伍爾弗漢普頓

這是我想出了

$location = $_POST['location']; 
$city_sql = " SELECT * FROM city"; 

$city_result = $db->query($city_sql); 
$new_array=array(); 
$i=0; 
while ($fetch_sql = $db->fetch_object($city_result)){ 

    if (strcmp(soundex(strtolower($fetch_sql->name)), soundex(strtolower($location))) == 0) { 
     $new_array[$i]['name'] = $fetch_sql->name; 
     $new_array[$i]['code'] = $fetch_sql->name; 
     $i++; 
    } 
} 

$k=0; 
for ($j=0; $j < sizeof($new_array); $j++){ 
    $i = similar_text(strtolower($new_array[$j]['name']), strtolower($db->escape_value($location)), &$similarity_pst); 
    if($i > $k && $i > 7){ 
     $k = $i; 
      $city_db_name = $new_array[$j]['name']; 
      $city_code = $new_array[$j]['code']; 
    } 
} 

請讓我知道,如果你有任何想法。

PHP MYSQL搜索同樣的關鍵字與多個表

回答

1

您應該使用SQL的功能,讓您的數據,而不是PHP的。

如果我正確理解,你想從幾個表和幾列中獲取數據。 更改您的查詢這樣的:

SELECT 
    -- list of considered columns 
    col1, 
    col2, 
    col3 
    -- ... 
FROM 
    City 
JOIN 
    State ON State.state_id = City.state_id 
JOIN 
    Country ON Country.country_id = State.country_id 
WHERE 
    col1 LIKE '%keyword%' 
    OR col2 LIKE '%keyword%' 
    OR col3 LIKE '%keyword%' 
    -- ... 

這樣,你會得到你需要一個包含關鍵字的列。例如,如果表城市包含{「巴黎」,「Paramatta有」,「波爾圖」},使用關鍵字,並且查詢SELECT name FROM city WHERE name LIKE '%Par%'將返回{「巴黎」,「Paramatta有」}

通過順便說一下,國家,城市之間的聯繫等,應在落後的數據庫中表示:國家< - 國家< - 城市

+0

謝謝你的快速反應。 – SameasBefore 2010-12-07 14:01:02