【问题标题】:Output three colums from my mysql database php从mysql数据库php输出三列
【发布时间】:2017-12-12 13:11:42
【问题描述】:

我是 php 的初学者,我想将 3 个字段从我的数据库输出到我的网站,其中包括一个块图像、文本和名称。使用 foreach 我只能得到三个中的两个。

<table border="2px">
    <tr>
        <th> Brand</th>
        <th> Images</th>
        <th> Details</th>
    </tr>

    <?php
    $tex   = [];
    $query = mysqli_query($conn, "SELECT * FROM upload");
    while ($row = mysqli_fetch_assoc($query)) {
        $images[] = $row['image'];
        $br[]     = $row['name'];
        $det[]    = $row['text'];
    }
    foreach (array_combine($det, $images) as $text => $image) {
        echo "<tr><td>";
        echo $name;
        echo "</td>";
        echo "<td>";
        echo '<img src="data:image/jpeg;base64,'.base64_encode($image).'"/>';
        echo "<td>";
        echo $text;
        echo "</td>";
        echo "</td></tr>";
    }
    ?>
</table>

这是我的代码的 sn-p,其中图像和文本在屏幕上输出,并在第 39 行接收和未定义的变量错误,即echo $name;。我应该在 foreach 语句中添加什么以使其输出所有三个?

$images[] = $row['image'];
$br[]     = $row['name'];
$det[]    = $row['text'];

有人可以向我解释这些,因为我知道它在做什么,但我想成为 100 岁。

【问题讨论】:

    标签: php arrays database mysqli foreach


    【解决方案1】:

    像这样使用单独的foreach 循环是没有意义的。您应该像这样简单地更改您的 while 循环:

    while($row = mysqli_fetch_assoc($query)){
        echo"<tr><td>"; 
        echo $row['name']; 
        echo "</td>"; 
        echo "<td>"; 
        echo '<img src="data:image/jpeg;base64,'. base64_encode($row['image']) .'"/>';
        echo"<td>";
        echo $row['text'];
        echo "</td>";
        echo"</td></tr>";
    }
    

    【讨论】:

      【解决方案2】:

      这可行:

      while ($row = mysqli_fetch_assoc($query)) {
          $images[] = $row['image'];
          $br[]     = $row['name'];
          $det[]    = $row['text'];
      }
      foreach ($images as $idx => $image) {
          echo "<tr><td>";
          echo $br[$idx];
          echo "</td>";
          echo "<td>";
          echo '<img src="data:image/jpeg;base64,'.base64_encode($image).'"/>';
          echo "<td>";
          echo $det[$idx];
          echo "</td>";
          echo "</td></tr>";
      }
      

      您只组合了textimage。这样你就不会知道哪个name 是对应的。我的循环通过使用索引 ($idx) 来解决这个问题。所有数组都具有相同的大小,所以这是可行的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-09
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多