2017-07-08 23 views
2

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

<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> 

即我的代码片段,其中图像和文本在屏幕上输出并在第39行这将是echo $name;接收和未定义的变量误差。我应该如何在foreach语句中将它输出所有三个?

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

有人可以解释这些对我来说,我有一个想法,它在做什么,但我想成为100

回答

1

这会工作:

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)解决了这个问题。所有数组都有相同的大小,所以这个工作。

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>"; 
}