2015-02-05 71 views
-1

我試圖抓住表中最高的4行並將變量分配給它們,以便我可以在整個代碼中使用它們。根據ID獲取排名前4的最高行

這是我能得到那麼遠,

 <?php 
$username="USERNAME"; 
$password="PASSWORD"; 
$database="DATABASE"; 
$conn = mysqli_connect(localhost, $username, $password, $database); 

$query = "SELECT * from `shoutbox` ORDER BY `id` DESC LIMIT 4"; 
$result = $conn->query($query); 

    while($row = $result->fetch_assoc()) { 
       $name =($row["name"]); 
       $message =($row["message"]); 
       $time =($row["time"]); 
    } 


?> 

我怎麼能夠分配更多的變量,以獲得未來3行?

+0

'$結果=陣列(); ... $ results [] = $ row;'PS:變量周圍的括號是多餘的,看起來很奇怪。 – zerkms

+0

或者您可以使用您爲每次迭代創建的變量,通常用於相同的目的。 –

+0

@zerkms我從來沒有真正學過數組是真的,我不知道我會怎麼做呢=/ – DanMossa

回答

1

我相信這是(抱歉,長的日子,所以我可能會關閉)

$result = array(); 
while(...){ 
     $result[] = $row; 
} 
+0

我該如何設置它? http://pastebin.com/Pbq04Vym。抱歉,添麻煩了! – DanMossa

+0

@pshyoulost那麼'[1]'從哪裏來?爲什麼你到處都放括號?! – zerkms

+0

@zerkms我有點拉它從我的屁股!我不知道!這就是它教給我的! – DanMossa

0

定義$result作爲陣列,同時在

$result = array(); 
while($row= ....){ 
$var= $row['name']; 
............. 
} 
1

我建議您在結果集循環結束後,並指定每個迭代對於一個數組,您可以稍後將這些值從數組中取出。
這裏是一個工作更新到您的代碼

// ... 
$query = "SELECT * from `shoutbox` ORDER BY `id` DESC LIMIT 4"; 
$result = $conn->query($query); 

// create array to hold queried result set 
$output = array(); 

// loop through result set and assign each row to a key in $output array 
// Note: the fetch_assoc() method auto-increments an internal pointer 
// so as you spin through the result set $row will move down the rows 
while($row = $result->fetch_assoc()) { 
    $output[] = $row; 
} 

// $output now contains an associative array on each key representing 
// each row, so to access each row: 
foreach($output as $row) { 
    echo $row["name"] . "<br>"; 
    echo $row["message"] . "<br>"; 
    echo $row["message"] . "<hr>"; 
}