重置MySqli指针?

时间:2011-07-14 16:41:42

标签: php arrays mysqli

我正在努力重置一个指针。我想这样做,因为我将在同一个脚本中使用相同的查询两次。至于我可以解决的问题,我可以通过在通过获取的数组循环后重置指针来完成此操作。如果有更好的方法,我很乐意听到它。

无论如何,这就是我得到的。

$getEvent = $connection->prepare("SELECT * BLABLA FROM BLABLA");

$getEvent->bind_param("i", $eventID); 

    $getEvent->execute();
    $getEvent->bind_result($eventMember, $eventStaff, $eventMemberID, $eventMemberSuper);

while($getEvent->fetch())
    {
        // Do stuff
    }

// Then bunch of code, before finally another

//$getEvent->execute(); //Script doesn't work without this and next line
//$getEvent->bind_result($eventMember, $eventStaff, $eventMemberID, $eventMemberSuper);

 while($getEvent->fetch())
    {
      // Do other stuff
    }

我试过$getEvent->data_seek(0);但没有运气。该脚本仅在我重新声明$getEvent->bind_result时才有效。提前感谢您的回复。

1 个答案:

答案 0 :(得分:3)

这给数据库服务器带来了不必要的额外压力。而不是倒回和重用结果集,而是将整个事物存储在数组中以开始。然后,您可以在PHP应用程序代码中按照您的喜好多次使用它。

更新修复了代码,因此它应该与MySQLi而不是PDO一起使用。此外,将结果转换为关联数组。

$results = array();
while($getEvent->fetch())
{
    $results[] = array('eventMember'=>$eventMember, 'eventStaff'=>$eventStaff, 'eventMemberID'=>$eventMemberID, 'eventMemberSuper'=>$eventMemberSuper);
}

// Now use $results however you need to.