無論出於何種原因,我需要通過一次mysql結果集兩次。有沒有辦法做到這一點? 我不想重複執行查詢,也不希望重寫腳本,以便將行存儲在某處,然後重新使用它們。如何通過mysql結果兩次?
回答
這是你如何做到這一點:
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
// set the pointer back to the beginning
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)){
// do whatever here...
}
不過,我會說,這似乎不是處理這個問題的正確方法。爲什麼不在第一個循環內進行處理?
爲什麼mysql_fetch_assoc()?我可以使用mysql_fetch_array() –
A-OK:是的,無論你喜歡什麼。 – phant0m
是的,你可以。這是同樣的事情,只是提取它的不同方式(列名/列號)。 –
試試mysql_data_seek()是否滿足您的需求。
mysql_data_seek()移動與指定結果 標識符相關聯的結果的MySQL的 內部 行指針爲指向指定 行號。下一次調用MySQL 提取函數,如 mysql_fetch_assoc(),將返回該行 行。
ROW_NUMBER在0開始。ROW_NUMBER 應該是從0到 mysql_num_rows()的範圍內的值 - 1。然而,如果 結果集爲空 (mysql_num_rows()== 0),一個尋求0 將與E_WARNING和 mysql_data_seek()失敗,將返回FALSE
您可以使用mysql_data_seek將內部指針移動到數據集的開頭。然後,您可以再次遍歷它。
我承認我沒有嘗試這樣做,但你有你的第一次迭代
mysql_data_seek($queryresult,0);
後試圖去第一條記錄?
嗯,你總是可以指望你讀的行數,然後做這樣的事情:
if (rownumber == mysql_num_rows($result)) { mysql_data_seek($result, 0); }
不知道你爲什麼會需要,但它是。
替代數據所追求的是將值存儲到一個數組:
$arrayVals = array();
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
$arrayVals[] = $row;
}
// Now loop over the array twice instead
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something here
}
$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
$row = $arrayVals[$x];
// Do something else here
}
我寫了一個幫助函數,我調用了multiRow(),它可以完成所有這些操作並返回數組行。 –
爲mysqli,你應該做到以下幾點;
$result= $con->query($sql); // $con is the connection object
$result->data_seek(0);
- 1. 如何通過1 PHP/MySQL的結果
- 2. 結果兩次
- 3. 如何通過一次點擊而不是兩次顯示搜索結果?
- 4. MySQL的 - 通過結果
- 5. 如何一次兩次驗證兩次結果
- 6. 如何通過結果
- 7. 存儲過程返回結果兩次
- 8. (MySQL的)存儲過程 - 通過結果
- 9. 通過select dropdown過濾mysql結果
- 10. MySQL - 通過算術/函數調用結果在兩列中排序結果
- 11. 如何訂購兩個表結果MySql
- 12. 如何通過OU過濾Win32_UserAccount結果
- 13. 如何在MySQL中過濾兩個標籤參數的結果?
- 14. 結合兩次安裝mysql
- 15. 通過Hudson生成Jmeter結果爲幾次試驗的結果
- 16. 如何通過angular.forEach循環並只顯示一次結果
- 17. 如何循環通過SQLite步驟結果多次
- 18. 通過累計列值組結果mysql
- 19. MySQL:通過用戶名得到結果
- 20. 通過MySQL循環播放結果
- 21. 通過PHP顯示MYSQL結果的值
- 22. 通過REGEX在MySQL中解析結果
- 23. 通過`OR`語句訂購結果MySQL
- 24. php不通過mysql循環結果
- 25. PHP MySQL的結果再次
- 26. MySQL - 過濾結果
- 27. 如何通過PHP循環遍歷MySQL結果?
- 28. 我如何通過ID(PHP)添加和排序MySQL結果
- 29. 如何通過選擇菜單對mysql結果進行排序
- 30. 循環兩組結果兩次
試試這個函數重置指針。 http://php.net/manual/en/function.mysql-data-seek.php – afarazit
使用哪個MySQL庫?通常可以倒回結果集中的內部指針。 –