如何调用php数组两次而不会丢失结果?

时间:2016-07-10 22:39:12

标签: php arrays while-loop

我有以下代码:

$qry = "SELECT * FROM Table WHERE...";
$result = $db->query($qry);
$if($db->error)die($db->error);

这将返回一个包含15名学生的数组。然后我的代码继续这样:

$faculty= $result->fetch_assoc();
if ($faculty['field'] == 1)
    die();

while($students = $result->fetch_assoc()) {
    /*display all students*/
}

我遇到的问题是我的while循环只显示14名学生,当我需要它显示所有15名时。我相信第一个学生在我使用时迷路了:

$faculty= result->fetch_assoc();

但是我认为,因为我的while循环正在调用原始$result数组,所以我不会受此影响。

有人能解释这里发生了什么吗?如何在不必重新查询我的数据库且不丢失第一个结果的情况下两次使用相同的数组?

2 个答案:

答案 0 :(得分:1)

这是因为每次调用data_seek时都会返回当前行并将指针移动到下一行。您可以使用$result->data_seek(0); 将结果指针调整为结果中的任意行:

$faculty= $result->fetch_assoc();
if ($faculty['field'] == 1)
    die();
$result->data_seek(0);
while($students = $result->fetch_assoc()) {
    /*display all students*/
}

您的代码如下所示:

{{1}}

我希望这会对你有所帮助。

答案 1 :(得分:0)

您根本不必将结果放入faculty变量中。

$qry = "SELECT * FROM Table WHERE...";
$result = $db->query($qry);
$if($db->error)die($db->error);
// Check to see if Result is Empty
if(mysql_num_rows($result) == 0) {
  echo("No Information in Result");
} else {
  while($row = mysql_fetch_array($result) {
  //Do Some Code Here
  //display students with $row variable
  echo($row['student_name'] . "<br />");
  echo($row['student_age']);
  }
}