簡體   English   中英

PHP MYSQL 嵌套連接

[英]PHP MYSQL nested join

<?php 
require "includes/dbh_l4d2.php";
$sql = "
SELECT * 
  FROM vpk
  JOIN maps 
    ON vpk.vpk_id = maps.vpk_id";

$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html><html><head><title>Website Title</title>
<link rel = "stylesheet" type = "text/css" href = "assets/css/tek_style.css" /></head>
<body>
<table>
<tr><th>VPK</th><th>MAP</th></tr>
<?php
  $result_num_rows = mysqli_num_rows($result);
  if( $result_num_rows> 0) {
    //while($row = mysqli_fetch_array($result)) {
    while($row = $result->fetch_assoc()) {
      echo '<tr><td id="'.$row["alpha_anchor"].'" rowspan="'.$row["map_count"].'" class="first_row">'.
            '<h3 id="'.$row["anchor"].'">'.$row["vpk_title"].'</h3>'.$row["vpk_file"].'<br>'.
            '<a class="details" href="'.$row[details].'">Details</a>&nbsp;'.
            '<i><a href="'.$row[download].'">Download vpk</a></i>'.
            '</td></tr>';

      for ($i=0; $i < $row["map_count"]-1; $i++) {
        echo '<tr><td>'.$row["map_name"].'></td></tr>';
      }

    }
  }
?>
</table></body></html>

這是代碼中的 output

錯誤的輸出

這就是我想要的樣子

正確的輸出 需要做什么才能使這項工作正常??? 提前感謝您的幫助。

您的嵌套循環是從同一行獲取map_name ,而不是從每一行結果。

您可以做的是使用GROUP_CONCAT()將所有 map 名稱組合成一行結果,然后在創建表時使用explode()將它們拆分。

<?php 
require "includes/dbh_l4d2.php";
$sql = "SELECT vpk.*, GROUP_CONCAT(maps.map_name) AS map_names 
        FROM vpk 
        INNER JOIN maps ON vpk.vpk_id = maps.vpk_id
        GROUP BY vpk.vpk_id";
//$sql = "SELECT * FROM vpk, maps JOIN vpk ON vpk.vpk_id = maps.vpk_id";
$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html><html><head><title>Website Title</title>
<link rel = "stylesheet" type = "text/css" href = "assets/css/tek_style.css" /></head>
<body>
<table>
    <tr><th>VPK</th><th>MAP</th></tr>
    <?php
    $result_num_rows = mysqli_num_rows($result);
if( $result_num_rows> 0) {
    //while($row = mysqli_fetch_array($result)) {
    while($row = $result->fetch_assoc()) {
        $map_names = explode(',', $row['map_names']);
        echo '<tr><td id="'.$row["alpha_anchor"].'" rowspan="'.$row["map_count"].'" class="first_row">'.
            '<h3 id="'.$row["anchor"].'">'.$row["vpk_title"].'</h3>'.$row["vpk_file"].'<br>'.
            '<a class="details" href="'.$row[details].'">Details</a>&nbsp;'.
            '<i><a href="'.$row[download].'">Download vpk</a></i>'.
            '</td></tr>';

        foreach ($map_names as $map_name) {
            echo '<tr><td>'.$map_name.'></td></tr>';
        }
    }
}
?>
</table></body></html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM