PHP动态重复Mysqli结果集

时间:2015-04-09 14:01:28

标签: php mysql arrays select mysqli

我尝试使用来自数据库表的相同结果填充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/>";
        }
    }
}

1 个答案:

答案 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;
   }
}