PHP中的Foreach循环无法正确“读取”表

时间:2018-08-14 11:17:52

标签: php mysql foreach

以下代码应该为在autoren_werke表中找到的每一行在select-inpupt字段内创建另一个html-option-field。

但是发生的是,无论autoren_werke表包含多少条目,输出都是一个选项字段。

我不知道为什么它不能与foreach循环一起使用,但显然不行。怎么了?

<?php  
$holeIdVonAutorenWerke = "SELECT * FROM autoren_werke";
$resultholeIdVonAutorenWerke = mysqli_query($db, $holeIdVonAutorenWerke);

foreach($resultholeIdVonAutorenWerke as $row) {
$autor_id = $row['autor_id'];
$werk_id = $row['autor_id'];

$holeAutorenInfos = "SELECT vornamen, nachname, weitere FROM autoren WHERE id = $autor_id";
$holeAutorInfosResult = mysqli_query($db, $holeAutorenInfos);
$autorenInfos = mysqli_fetch_row($holeAutorInfosResult);

$holeWerkeInfos = "SELECT werk_titel FROM werke WHERE id = $werk_id";
$holeWerkInfosResult = mysqli_query($db, $holeWerkeInfos);
$werkInfos = mysqli_fetch_row($holeWerkInfosResult);


$option = "<option> $autorenInfos[0] $autorenInfos[1] $autorenInfos[2] $werkInfos[0]  </option>";
}

?>    

<select>
<?php echo $option ?>
</select>

1 个答案:

答案 0 :(得分:1)

您需要一次读取一条记录/行。然后将数据连接到$ option

// set option to a blank string
$option = '';
// using fetch array to get rows from the DB one at a time
while($row = fetch_array(resultholeIdVonAutorenWerke)){

    // note the .= to concatenate the option data
    $option .= "<option> $autorenInfos[0] $autorenInfos[1] $autorenInfos[2] $werkInfos[0]  </option>";

}