我正在努力重置一个指针。我想这样做,因为我将在同一个脚本中使用相同的查询两次。至于我可以解决的问题,我可以通过在通过获取的数组循环后重置指针来完成此操作。如果有更好的方法,我很乐意听到它。
无论如何,这就是我得到的。
$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
时才有效。提前感谢您的回复。
答案 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.