我尝试使用来自数据库表的相同结果填充0到多个下拉列表,具体取决于之前的选择。选择0和1时工作正常,但是当我尝试将结果集插入后续选择元素时,它不工作。我假设它是$row
数组位置的问题。
$homePlayers = "SELECT first_name, last_name, player_id FROM players WHERE team_name LIKE '$homeTeam%'";
$homePlayersQuery = mysqli_query($dbc, $homePlayers);
if (!$homePlayersQuery) {
echo 'err';
} else {
for ($i = 1; $i <= $homeTeamScore; $i++) {
echo "<select name='select-home-scorer-$i'>";
while ($row = mysqli_fetch_array($homePlayersQuery)) {
echo current($row);
echo "<option value='" . $row['player_id'] . "'>" . $row['first_name'] . " " . $row['last_name'] . "</option>";
}
echo "<option value='og'>Own Goal</option></select><br/>";
}
}
}
答案 0 :(得分:1)
您遇到的问题是mysqli_fetch_array()读取结果集的数据一次。当你读完最后一条记录后,对mysqli_fetch_array()的后续调用将返回false。
你有2个选择。 首先,您可以将记录读入数组并重复解析数组。
while ($row = mysqli_fetch_array($homePlayersQuery)) {
$resultsArray[] = $row;
}
for ($i = 1; $i <= $homeTeamScore; $i++) {
foreach($resultsArray as $resultItem) {
do_something_here();
}
}
}
作为第二个选项,您可以回滚指向mysql结果集的指针,以便您可以再次开始阅读结果。
for ($i = 1; $i <= $homeTeamScore; $i++) {
// Rewind the pointer to the start of the results
mysqli_data_seek($result, 0);
while ($row = mysqli_fetch_array($homePlayersQuery)) {
$resultsArray[] = $row;
}
}