2016-02-23 43 views
-1

如何正確回顯一個到多個查詢結果?如何在PHP中處理一對多關係

有了一個表查詢的結果,我只想一唱一和取行之後,例如:

+---+------+ 
|ID | title| 
|1 | a | 
|2 | b | 
|3 | c | 
+---+------+ 

$smtp->bind_result($ID, $title); 
while($smtp->fetch()) { 
    \\echo here       
} 

但查詢中使用後自然連接(如下圖所示),我不知道如何回聲在PHP爲:
「3 - C - 行動,幻想,軍事」

+----+-------+----------+ 
| ID | title | genre | 
| 3 | c | Action | 
| 3 | c | Fantasy | 
| 3 | c | Military | 
+----+-------+----------+ 

編輯:

讓我改一下這個問題。當使用一對多關係時,我如何正確展示「多」表中的結果?

這是我目前使用的代碼。

//connect to database with self made db class object. 
$db = new db(); 
$db = $db->connect(); 

$smtp = $db->prepare('select ID, title, description, genre from movie NATURAL JOIN movie_genres WHERE date >= ? AND date < ?'); 
$smtp->bind_param('ss', $seasonStart, $seasonEnd); //variables defined based on current date. 
$smtp->execute(); 
$smtp->bind_result($ID, $title,$description, $genre)); 
while($smtp->fetch()) { 
    echo ' 
    <div class="upcoming"> 
     <div id="upcomingPoster" style="background-image: url(images/' . $ID . '.jpeg)"> 
      <div> 
       <a href="">' . $title . '</a> 
      </div> 
     </div> 
     <div class="upcomingInfo"> 
      <h2>Description</h2> 
      <p class="upcomingInfoDescription">' . $description .'</p> 
      <div></div> 
      <p>' . $genre . '</p> 
     </div> 
    </div>'; 
} 

現在,當使用這個,我的代碼基本上循環的每一行。但是我試圖把所有的流派放在一起,然後再循環到下一部電影。

+0

你能分享一下你試過的嗎? –

+0

並且您正在使用的查詢也請在。 – Mureinik

+0

也許你正在尋找array_merge()http://php.net/manual/es/function.array-merge.php –

回答

-1

我真的不知道你在做什麼,如果我明白你想要問的話。

我想你使用的是PHP-PDO,因此有必要將sql語句中的讀取結果存儲到另一個變量中。這可能看起來像這樣:

$smtp->bind_result($ID, $title); 
while($result = $smtp->fetch()) { 
    var_dump($result); 
} 

所以,現在你應該看到提取行的數據。

0
$stmt->bind_result($ID, $title, $genre); 
$movies = array(); 
while($stmt->fetch()) { 
    if (!isset($movies[$ID])){ 
     $movies[$ID] = array('title'=>$title, 'genres'=>array()); 
    } 
    $movies[$ID]['genres'][] = $genre; 
} 
foreach ($movies as $ID=>$movie){ 
    echo $ID . ' - ' . $movie['title'] . ' - '; 
    $first = true; 
    foreach ($movie['genres'] as $genre){ 
     if (!first) echo ', '; 
     $first = false; 
     echo $genre; 
    } 
    echo '<br />'; 
} 
相關問題