2017-09-29 69 views
0

我有一個數據庫與兩個表和兩個表有「一對多」的關係。
第一個表格稱爲具有列的數據(名稱,電話,personid)。
第二個表稱爲列鏈接(linkid,link,personid)。如何在html表中以「一對多」關係打印兩個表的列?

Personid是forigne鍵,我想從兩個表(名稱,電話,鏈接)打印3列,其中鏈接是每個用戶鏈接。

所以我想表是類似的東西:

echo "<table>";  
echo "<tr><th>Name</th> <th>Phone</th> <th>Links</th></tr>"; 

while ($row = $result->fetchAll(PDO::FETCH_ASSOC)) 
{ 
    echo "<tr>"; 
    echo "<td>".$row['name']."</td>"; 
    echo "<td>".$row['phone']."</td>"; 
    echo "<td>".$row['links']."</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

而且表看起來像這樣:

姓名電話鏈接

約翰67655 LINK1

  link2 
      ... 
+0

那麼,在哪裏查詢? –

+0

你的意思是哪個查詢?循環中的一個還是什麼? – Sam

+0

'$ result'查詢 –

回答

0

您的查詢應該像

SELECT data.personid, name, phone, link FROM data JOIN links ON data.personid = links.personid 

然後在PHP中:

$data = []; 

foreach($results as $result) { 
    if (!isset($data[$result['personid']])) { 
     $data[$result['personid']] = [ 
      'name' => $result['name'], 
      'phone' => $result['phone'], 
      'links' => [], 
     ]; 
    } 

    $data[$result['personid']]['links'][] = $result['link']; 
} 

後來在HTML:

echo '<table>'; 
foreach ($data as $row) { 
    echo "<tr>"; 
    echo "<td>".$row['name']."</td>"; 
    echo "<td>".$row['phone']."</td>"; 
    echo "<td>".implode(', ', $row['links'])."</td>"; 
    echo "</tr>"; 
} 

echo "</table>"; 
+0

警告:非法字符串偏移'personid'警告:非法字符串偏移'personid' 警告:非法字符串偏移'姓名' 警告:非法字符串偏移'電話' 警告: 警告:非法字符串偏移'鏈接' – Sam

+0

@Sam確保'$ results'是實際的數據庫結果而不是字符串。 – Justinas

+0

有很多警告,請問如果有什麼不清楚在我說的問題中,我會清除它 – Sam

相關問題