2011-11-27 95 views
17

簡單使用查詢兩次mysql_fetch_array

$stuff = mysql_query("SELECT * FROM users"); 

while($s = mysql_fetch_array($stuff)){ 
# .... 
} 

while($r = mysql_fetch_array($stuff)){ 
# ... 
} 

的最後一段時間()不工作。我曾嘗試運行foreach($ stuff作爲$ s),但後來我得到無效的數組錯誤。

我該如何使用相同的查詢兩次?

+0

我認爲你需要重置數組到開始,然後再嘗試重用它,因爲你已經到達第一個結果集的末端。 –

+2

請停止使用outdate'mysql_ *'函數學習如何使用[PDO](http://php.net/pdo)並準備好語句。 –

回答

35
$stuff = mysql_query("SELECT * FROM users"); 

while($s = mysql_fetch_array($stuff)){ 
# .... 
} 
// add this line 
mysql_data_seek($stuff, 0); 

while($r = mysql_fetch_array($stuff)){ 
# ... 
} 

應該做的伎倆

另一種方法當然是你的結果存儲在一個陣列和重用

+3

'mysql_data_seek($ stuff,0);' 這裏是手冊:[mysql_data_seek函數](http://www.php.net/manual/en/function.mysql-data-seek.php) –

+0

無字。 .. thanx ..超讚:) –

0

看到docs

我想這是因爲

返回對應於提取的行的數組,並且mo前面的內部數據指針

我認爲移動與mysql_data_seek(數據指針)將做的工作 但我認爲這不是一個好辦法,你應該平時獲取從數據庫中的數據一次,並存儲它們

+1

其實,你建議的第一種方法是不錯的選擇。 – Starx

+0

是的我知道,我只是想說如果可能的話最好使用結果 –

2
 
$stuff = mysql_query("SELECT * FROM users"); 

while($s = mysql_fetch_array($stuff)){ 
# .... 
} 
mysql_data_seek($stuff, 0); 
while($r = mysql_fetch_array($stuff)){ 
# ... 
} 
//ref: http://www.php.net/manual/en/function.mysql-data-seek.php 
-1

如果您用戶「的foreach」而不是「而」你不會有任何問題,無需mysqli_seek_data():

//1st loop : 
foreach($stuff as $row) 
{ 
    echo $row['...']; 
} 
... 
//2nd loop : 
foreach($stuff as $row) 
{ 
    echo $row['...']; 
} 
0

這裏是另外一個簡單的解決方案:

$slq = "SELECT * FROM users"; 

$stuff1 = mysql_query($slq); 

while($s = mysql_fetch_array($stuff1)){ 
# .... 
} 

$stuff2 = mysql_query($slq); 

while($r = mysql_fetch_array($stuff2)){ 
# ... 
} 

將sql分配給一個變量,並多次調用mysql。

沒有更多的MySQL。使用mysqli或pdo