从获取阵列从MySQL
问题描述:
获得精确值不是Select specific value from a fetched array从获取阵列从MySQL
,这里是我的查询:
$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,马苏德, 那我在第一个片段做错了什么?
答
您不能在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
答
其中订单后病情由
$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
}
答
可以行值分配给任何阵列和使用该阵列。
<?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";