2013-08-19 27 views
1

有沒有辦法檢查從MySQL返回的記錄集上的文件結束(在PHP中)?如何在不提前指針的情況下測試更多數據?

我想這樣做如下:

while (!mysql_eof($result) { 

    $row = mysql_fetch_array($result); 
} 

我不想在主迴路中使用mysql_fetch_array(),因爲我需要做進一步的循環和唐」裏面讀t要記錄集當前記錄計數器更新即。我不想推進當前的指針。

+0

[不推薦使用mysql_擴展名](http://www.php.net/manual/en/intro.mysql.php)。改用mysqli或PDO。 –

+0

[請考慮檢查下面的答案之一作爲正確的答案,如果他們解決您的問題,請看這裏how。](http://stackoverflow.com/about) – Prix

回答

0
$result = mysql_query("SELECT * FROM table"); 
$num_rows = mysql_num_rows($result); 
$counter = 1; 
while($counter<=$num_rows) 
{ 
//There is still more data 
//Do whatever to the current row 
$counter++; 
} 

希望這樣做。如果不是,我不知道會發生什麼。

+0

我知道我可以做一個讀取數組,問題是:有沒有辦法在沒有前進記錄集的情況下檢查更多的數據。 – Pete855217

+0

更新數據庫結構以處理簡單EOF函數的LOL是一個簡單問題的奇怪解決方案。我的數據庫管理員會嘲笑這個請求,理所當然。 – Pete855217

+0

@ Pete855217您的請求是不尋常的,我提供的以前的解決方案是一個快速修復,如果您的DBA沒有問題,則只需不到一分鐘即可完成。無論如何,我上面提到的應該是你正在尋找的東西。 –

2

寫您的查詢像

$result = mysql_query("SELECT * FROM MyTable ORDER BY id DESC LIMIT 0,1"); 
$row = mysql_fetch_assoc($result); 
print_r($row); 

,並儘量避免mysql_*語句由於整個ext/mysql PHP擴展,它提供了與前綴mysql_*命名的所有功能,被正式棄用的PHP v5.5.0,並將於中刪除未來

有兩個其他MySQL的擴展,可以更好地利用:MySQLiPDO_MySQL,其中任何一個都可以用來代替ext/mysql

+0

我的ans會給你EOF你的記錄集 – Gautam3164

+0

我不dont認爲這是解決方案。他想要的是檢查結果數組的末尾是否已達到。 –

+0

結果的結束意味着..在該權利的最後一個記錄??我做了同樣的事情....他可以添加他的custome條件 – Gautam3164

0

mysql_eof()已棄用。可以使用mysql_errno()mysql_error()來代替。

mysql_eof()確定結果集的最後一行是否已被讀取。

如果您從mysql_store_result()成功調用獲取結果集,則客戶端會在一次操作中接收整個集合。在這種情況下,從mysql_fetch_row()開始的NULL返回始終表示結果集的末尾已達到,因此不需要撥打mysql_eof()。與mysql_store_result(), mysql_eof()一起使用時總是返回true。

查看:http://dev.mysql.com/doc/refman/4.1/en/mysql-eof.html瞭解更多詳情。

+2

[所有mysql_ *函數都被棄用](http://www.php.net/manual/en/intro.mysql.php)。 –

+0

感謝RoyMJ--我的PHP版本已經過去了mysql_eof(),但我可以嘗試mysql_error()方法,雖然它不是最優的。想要按照我嘗試的方式來執行邏輯的原因是,它保持了標準的順序文件處理算法的完整性。更新算法是一項艱鉅的任務。 – Pete855217

相關問題