【问题标题】:PHP dynamical duplicate Mysqli results setPHP动态复制Mysqli结果集
【发布时间】:2015-06-14 22:45:52
【问题描述】:

我正在尝试根据先前的选择使用数据库表中的相同结果填充 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/>";
        }
    }
}

【问题讨论】:

  • 请包括您遇到的问题。错误堆栈(如果存在)。
  • 当你使用mysqli_fetch_array()得到最后一行时,它将不再返回任何行,使用mysqli_data_seek()重新开始。
  • ok @crafter 所以我仍然使用 fetch 数组来获取记录和数据搜索来重置计数器还是数据搜索也用于获取结果。
  • @Lonergan6275,data_seek 到位置 0 会将指针回退到结果的开头,以便您可以重新运行 fetch。
  • @crafter 如果您想将其添加到答案中,它会起作用。谢谢

标签: php mysql arrays select mysqli


【解决方案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;
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2016-01-17
    相关资源
    最近更新 更多