2011-07-14 38 views
2

我正在努力重新設置一個指針。我想這樣做是因爲我要在同一個腳本中使用相同的查詢兩次。至於我可以解決的問題,我可以通過重新設置指針來完成這個操作,這個指針是通過取出的數組循環的。如果有更好的方法來做到這一點,我很樂意聽到它。重置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。在此先感謝您的回覆。

回答

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. 
+0

嗯,我在想它,但希望有另一種方式,因爲有很多重寫。但是,這樣做的全部意義在於減輕DB服務器上的壓力:) 非常感謝:) –

+0

你太棒了。我一直在努力:) –