2015-06-01 46 views
0

我有我的表像這樣PHP做一個數組列表匹配的ID

id categories 
1 80|98|22|6|76|1|24|129|59|73|7|40|85|35|42|126|81|37|128|147|106 
2 15|85|49|22|6 

你可以看到我有類ID由separted表| 。我有另一個表與這些類別的名稱。我想獲得所有的類別並將它們組成一個數組。到目前爲止,我確實喜歡這個

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "listings"; 
$mysqli = new mysqli($servername, $username, $password, $dbname); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$listing_array = array(); 
$category_array = array(); 

$query = "SELECT * FROM `listings` ORDER by listing_id"; 
    $category_array = array(); 
    if ($result = $mysqli->query($query)) { 
    while ($obj = $result->fetch_object()) { 
    $categories = $obj->categories; 
    } 
    foreach($category_array as $category_names) { 
     $test = explode('|', $category_names); 
    } 


    $result->close(); 
} 

$mysqli->close(); 
?> 

在這之後,我怎麼能得到類別的名稱,並使他們的行數組?類別表的

+0

郵政表模式太.. –

+3

不要保存的數據一樣,連接將是噩夢般的 – AsConfused

+0

類別表只有ID和名稱。那就是全部 – NewUser

回答

0
$query = "SELECT * FROM `listings` ORDER by listing_id"; 
if ($result = $mysqli->query($query)) 
{ 
while ($obj = $result->fetch_object()) 
{ 
    $categories =array(); 
    $cat = explode("|",$obj->categories); 
    $querycat = "SELECT CategoryName FROM `category` where category_id in '".$cat."'"; 
     while($objcat = $resultcat ->fetch_object()) 
     { 
     array_push($categories,$objcat ->CategoryName); 
    } 
    } 
    } 
+0

爲什麼不使用'where in'而不是使用多個選擇? –

+0

是的。我們也可以使用它。但看到了代碼結構,它的基本格式。所以我建議這一個 – sujivasagam

+0

有時候人們會試圖幫助數據庫引擎,因爲它不能優化更好的查詢 – AsConfused