2

次のコードがあります。

  <?php

$select =  mysqli_query ($con,"SELECT field_2 FROM info4");  
 if (! $select) {
die('Query unfunctional ' . mysqli_error($con));
}
   ?>

<table>
<td><select name="City">

<?php
while ($res=mysqli_fetch_array($select)){
foreach($res as $value){
echo "<option>" . $value . "</option>";
}}
?>
</select></td></table>

接続はどこにありますか$con

しかし、これはすべての値が複製されたドロップダウンを出力します。たとえば、テーブルに 1 と 2 がある場合、出力は 1/1/2/2 (ドロップダウン) になります。私は自分のコードで間違いを犯していると思います.誰かがそれを見ることができますか?

前もって感謝します。

4

2 に答える 2

3

mysqli_fetch_arrayデフォルトでは、結果の戻り値の型MYSQLI_BOTHに設定されます。これは、連想値と非連想値の両方を返します。なぜなのかはわかりませんが、返される配列は次のとおりです。

$res = array(0 => '1', 'field_2' => '1');

を使用するか、戻り値としてmysqli_fetch_assoc指定することで解決できます。MYSQLI_ASSOC私の好ましい修正は次のとおりです。

while ($res = mysqli_fetch_assoc($select)) {
    echo "<option>$res[field_2]</option>";
}
于 2013-04-17T17:35:22.517 に答える
1

これを試して。この場合の foreach ループは不要です。

<?php
while ($res=mysqli_fetch_assoc($select)){
echo "<option>" . $res["field_2"] . "</option>";
}
?>
于 2013-04-17T17:35:14.653 に答える