2016-06-10 93 views
0

獲得精確值不是Select specific value from a fetched array從獲取陣列從MySQL

重複我有一個MySQL數據庫: enter image description here

,這裏是我的查詢:

$sql = "SELECT * FROM data ORDER BY Score DESC"; 

我希望它是一個人們可以更新其得分的排行榜,所以我不能使用

$sql = "SELECT * FROM data ORDER BY Score DESC WHERE ID = 1"; 

我想在第二行的用戶名在我query.So我寫道:

<?php 
include "l_connection.php"; 
$sql = "SELECT * FROM data ORDER BY Score"; 
$result = mysqli_query($conn, $sql); 
if($result->num_rows>0){ 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 

} 
echo "Result = '".$row[1]['Username']."''"; 
} 

?> 

但它返回的結果=「」好像有什麼在數組中。

但如果我寫

if($result->num_rows>0){ 
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo "Name = '".$row['Username']."''"; 
} 
} 

這將返回:帕勒姆,Mojtaba,Gomnam,馬蘇德, 那我在第一個片段做錯了什麼?

回答

1

您不能在while循環之外訪問$row

所以結果保存在一個新的數組,然後你就可以訪問while循環之外的新的數組:因爲你寫

$newResult = array(); 
if($result->num_rows>0){ 
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
     $newResult[] = $row; 
    } 
} 

echo "Result = '".$newResult[1]['Username']."''"; // thus you can access second name from array 
1

其中訂單後病情由

$sql = "SELECT * FROM data ORDER BY Score DESC WHERE ID = 1"; 

序列的查詢爲

SELECT * FROM data // select first 
WHERE ID = 1 
ORDER BY Score DESC// Order by at last 

查詢http://dev.mysql.com/doc/refman/5.7/en/select.html

而對於第二種情況,你需要獲取Username內部while循環和使用$row['Username']代替$row[1]['Username']

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo "Result = '".$row['Username']."''";// write inside while loop 
} 
0

可以行值分配給任何陣列和使用該陣列。

<?php 
    include "l_connection.php"; 
    $sql = "SELECT * FROM data ORDER BY Score"; 
    $result = mysqli_query($conn, $sql); 
    if($result->num_rows>0){ 
     $rows = array(); 
     while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
      $rows[] = $row; 
     } 
     echo "Result = '".$rows[1]['Username']."'"; 
    } 

?> 

或者,如果你從列只想第二最高得分,你可以限制用戶如

$sql = "SELECT * FROM data ORDER BY Score limit 1,1";