2011-12-24 72 views
-1

我不確定我明白MySQL如何工作。 我有一個表有1個名爲「id」的列,每行都有一個「id」的隨機數字值。 (該行是爲了通過之日起,他們被放進表(另一列稱爲時間戳)PHP MySQL數組

所以我可能有:

//row#: id# 
row1: 5 
row2: 17 
row3: 2 
row4: -54 
row5: 18 

現在,我可以通過「ORDER BY」重新安排他們和把它們按升序排列的「ID」

$table1 = mysql_query("SELECT * FROM table1 ORDER BY id ASC") or die(mysql_error()); 
$orderedArray = mysql_fetch_array($table1); 

所以現在我有一個數組($ orderedArray)..它應該是這樣的權利?:

row4: -54 
row3: 2 
row1: 5 
row2: 17 
row5: 18 

「id」列現在是按順序排列的,而不是行後的數字(在我的情況下,您會看到postdate(timestamp)而不是row1或row3,但我只是使用「row#」命名系統來創建例子更容易...

所以我有這個數組...現在,讓我們說我想打印我的ORDER BY主題數組的第三行,(也就是我的原始表中的第三行的「 ID「列...我的代碼是什麼?

我認爲是這樣的(但它沒有工作):

$row3id = $orderedArray['id', 3]; 
print $row3id; 

任何人都知道嗎?謝謝!

+1

你會做到這一點使用MySQLs LIMIT只返回第三排,而不是檢索從MySQL中的所有行,然後忽略所有,但第三個 – 2011-12-24 17:40:19

+1

'mysql_fetch_array'將結果集的第一行作爲數組提取。不是整個結果集作爲數組。看到我的答案吼叫。 – 2011-12-24 17:42:55

+0

@Mark,謝謝!這將使事情運行得更順暢!我試圖在昨天看到有限,並且感到困惑,但現在我知道我正在使用它們,因爲它今天應該會變得更容易!感謝大家! – 2011-12-24 18:35:21

回答

1

嘗試:

while ($row = mysql_fetch_array($table1)) { 
    $orderedArray[] = $row; 
} 

$row3id = $orderedArray[2]; 

PHP陣列從0開始作爲第一索引。

此外,mysql_fetch_array有一個可選參數result_type,它可以讓您決定如何返回結果。缺省值爲MYSQL_BOTH,這是您的案例中使用的,因爲您沒有識別result_type,因此您的數組結果帶有關聯索引和編號索引。

這裏看到更多的信息:

http://php.net/manual/en/function.mysql-fetch-array.php

+0

行政長官!謝謝!!! :) – 2011-12-24 18:26:00

1

mysql_fetch_array()會還給單行這是第一個。爲了讓所有的人,你應該先做一個while循環:

while($row = mysql_fetch_array($query)){ 
    $id[] = $row['id']; 
} 
// Use 
$result = $id[2]; 

在這種情況下,陣列將工作。如果你想得到第三個,你可以使用mysql_fetch_row()我想。

+2

應該是'$ id [] = $ row ['id'];'爲了'echo $ id [3];' – tamilsweet 2011-12-24 17:45:04

+0

是的。感謝關心我的代碼。 – MahanGM 2011-12-25 18:11:57

1

我的解決辦法: 你的SELECT是在數組$ orderedArray 如果你想要的是第三行:

$ I = 0;

while($orderedArray=mysql_fetch_array($table1)) 

{

如果($ I == 2){$回聲orderedArray [1]; } $ i ++;

}

不是最好的,但工作了第三排:)

+0

我正在考慮使用循環和捕捉第三個我只是不知道如何!謝謝! :)但其他答案也有一些很好的解決方案,你應該檢查出來! – 2011-12-24 18:25:30