2016-06-10 95 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";