2011-05-13 81 views
2

我有一個mysql結果(有許多行),我將在以後使用。目前,我只需要訪問(總和)前5行。問題是使用「AS」從查詢中保存行,所以現在可以使用$row['name']來訪問它們。我怎樣才能選擇前5行而不使用每個人的「名稱」?MySQL在查詢後選擇前5行

有沒有辦法這樣做,像這樣:

PHP:

for($i=0;$i<5;++$i) 
    echo $row[$i]; 

編輯
對不起,我的問題是錯誤的。 實際上:我怎樣才能使用相同的$結果2次而不丟失取數組的值?只要你想

+1

'for($ i = 0; $ i <5; ++ $ i)'語句有什麼問題? – ksindi 2011-05-13 11:24:30

+0

您可以在mysql查詢中使用LIMIT獲取5行而不是獲取所有行並僅使用5行。 – 2011-05-13 11:26:25

+0

@hydra,對不起,請參閱我的編輯@harry因爲後來我需要所有值 – Cristy 2011-05-13 11:27:51

回答

3

你用什麼與DB工作的取功能工作? PDO?庫MySQLi? MySQL擴展?

如果你使用MySQL擴展(mysql_connect()mysql_query()等),你可以使用mysql_data_seek()移動的MySQL結果內部的行指針:

$res = mysql_query($sql); 
if (mysql_num_rows($res)) { 
    // process first 5 lines 
    for ($n = 0; $n < 5; ++$n) { 
     $row = mysql_fetch_assoc($res); 
     if ($row === false) { 
      break; 
     } 
     // do something with $row 
     // ... 
    } 
    // reset pointer 
    mysql_data_seek($res, 0); 
    // process all rows 
    while ($row = mysql_fetch_assoc($res)) { 
     // do something with $row 
     // ... 
    } 
} 
mysql_free_result($res); 

另一種選擇是獲取所有成果轉化一個數組然後使用該數組。我想不出打開MySQL資源的好處。

2
$result = array(); 
while($row = mysql_fetch_array($queryResult)) { 
    $result[$row['primaryKey']] = $row; // index the $result according to any fieldValue(say primay key) so that you can access a single records without looping) 
    echo $row['name']; 
} 

使用$結果多次想你混淆東西。 $row['name']訪問名爲一個行的列鎪,你應該在你的while($row = mysql_fetch_assoc($result)) {}

1

你可以使用MySQL查詢作爲

SELECT * FROM table_name_ravi限制0,5

只是用這個