2017-07-08 5 views
2

私はPHPの初心者で、私のデータベースから3つのフィールドを私のウェブサイトに出力したいと思います。そこにはブロックイメージ、テキスト、名前が含まれています。 foreachを使って私は3人のうち2人だけを得ることができます。画像とテキストを画面上に出力され、echo $name;あろうライン39にエラーで受信して、未定義の変数である私のコードの抜粋であるmy mysqlデータベースから3つの列を出力する

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

。 foreach文に3つすべてを出力するにはどうすればよいですか?

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

あなただけtextを結合されており、 image。そうすれば、あなたはどちらが対応するものか分かりません。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>"; 
} 
関連する問題