0

情况:

如果满足条件,我正在编写代码来显示来自 2 个不同表的数据和来自单个表的 2 组不同数据。

问题:

如果第一个$row[7]NULL它死了并且不会继续。

如果第一个值之后的任何值$row[7]NULL或是$row2[5]NULL重复该行的前一个值。如果值是NULL我只希望它显示为空白并继续到下一行。

代码:

$sql = "SELECT * FROM roster WHERE uic='".$uic."'";
if($result = $mysqli->query($sql,MYSQLI_STORE_RESULT)) {
while($row = $result->fetch_row()) {
    if($row[7]) {
        $sql2 = "SELECT * FROM equipment WHERE id=$row[7]";
        $result2 = $mysqli->query($sql2,MYSQLI_STORE_RESULT);
        $row2 = $result2->fetch_row();
        if($row2[5]) {
            $sql3 = "SELECT * FROM equipment WHERE id=$row2[5]";
            $result3 = $mysqli->query($sql3,MYSQLI_STORE_RESULT);
            $row3 = $result3->fetch_row();
        }
    }
    echo '
        <tr bgcolor="#a3a3a3">
          <td>'.$row[1].'</td>
          <td>'.$row[2].'</td>
          <td>'.$row[3].'</td>
          <td>'.$row[4].'</td>
          <td>'.$row2[1].'</td>
          <td>'.$row2[2].'</td>
          <td>'.$row3[1].'</td>
          <td>'.$row3[2].'</td>
          <td>'.$row2[9].'</td>
          <td>'.$row2[7].'</td>
          <td>'.$row2[8].'</td>
        </tr>
         ';
    }
}
4

1 回答 1

0
$sql = "SELECT fields FROM roster r 
        LEFT JOIN equipment e1 ON e1.id=r.row7
        LEFT JOIN equipment e2 ON e2.id=e1.row5
        WHERE uic='$uic'";

fields由逗号分隔的您需要的字段列表组成,来自所有 3 个表,以表别名为前缀,例如r.id, e1.name, e1.price, e2.name as e2name, e2.price as e2price
row7并且row5必须重命名为真实字段名称。

于 2013-04-27T06:11:59.353 回答