自從7年前開發我的第一個mySQL項目以來,我一直使用相同的一組簡單函數來訪問數據庫(儘管最近把這些放到了Database類中)。隨着我開發的項目變得越來越複雜,數據庫中的記錄越來越多,因此內存問題的可能性也越來越大。PHP'循環訪問MySQL結果集時允許內存大小爲67108864個字節'
在循環訪問mySQL結果集時,我收到了PHP錯誤Allowed memory size of 67108864 bytes exhausted
,並想知道是否有更好的方法來實現我沒有高內存使用的靈活性。
我的功能看起來是這樣的:
function get_resultset($query) {
$resultset = array();
if (!($result = mysql_unbuffered_query($query))) {
$men = mysql_errno();
$mem = mysql_error();
echo ('<h4>' . $query . ' ' . $men . ' ' . $mem . '</h4>');
exit;
} else {
$xx = 0 ;
while ($row = mysql_fetch_array ($result)) {
$resultset[$xx] = $row;
$xx++ ;
}
mysql_free_result($result);
return $resultset;
}
}
然後我就可以編寫一個查詢,並使用該函數來獲取所有的結果,例如:
$query = 'SELECT * FROM `members`';
$resultset = get_resultset($query);
我可以再通過$resultset
和顯示環結果,例如:
$total_results = count($resultset);
for($i=0;$i<$total_results;$i++) {
$record = $resultset[$i];
$firstname = $record['firstname'];
$lastname = $record['lastname'];
// etc, etc display in a table, or whatever
}
有沒有更好的循環途徑gh的結果,同時仍然可以訪問每個記錄的屬性來顯示結果列表?我一直在尋找有類似問題的人,所給出的答案似乎不適合我的情況或者有點模糊。任何幫助將不勝感激。
你可能想看看內置的PHP PDO類:http://php.net/manual/en/book.pdo.php – seavers 2012-07-29 23:10:47
你應該考慮使用[PDO](http://php.net/ pdo),因爲'mysql_ *'函數已經被棄用了很長一段時間,並且它們很可能在不久的將來消失。 – rid 2012-07-29 23:11:45