如果表中存在多个SQL条目,则仅回显一行

时间:2015-08-05 19:18:43

标签: php sql mysqli

这可能是PHP初学者的问题,我想。很抱歉,问一些对大多数人来说可能非常明显的事情。我正在通过URL运行从Linden Lab Second Life服务器到外部SQL数据库的PHP请求。我在URL中发送了Player-Key。然后,来自SQL数据库的http响应应该给出游戏中玩家的等级。

我编写了这段代码片段,大部分时间都是为了它的目的:

 <?php

//You need to insert your specific data for "DB_HOSTNAME","DB_USERNAME","DB_PASSWORD","DB_DATABASE"

$con=mysqli_connect("DB_HOSTNAME","DB_USERNAME","DB_PASSWORD","DB_DATABASE");
// Check connection

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

//use the parameters in the http-link to set the $ variables and real escape them for security reasons (against injection)
$PlayerKey = mysqli_real_escape_string($con, $_GET['PlayerKey']);

//Define which entry you chose from the database
$readthis = mysqli_query($con, "SELECT users_2015.Rank FROM users_2015 WHERE users_2015.PlayerKey = '$PlayerKey'");

//Fetch the information array
while($output = mysqli_fetch_array( $readthis )) {

// Print out the contents of each row into a table

    echo $output['Rank'];

}

//close connection to database
mysqli_close($con); ?>

然而,在Second Life中有一些玩家已多次购买游戏。所以他们有几个级别。在这种情况下,不仅显示一个排名编号,而且所有不同的返回字符串都显示为一个大字符串。如果某人已经购买了三次游戏并且他/她的排名是#199,#7和#22,那么所给出的http响应将是&#34; 199722&#34;。

现在我的问题:如何更改代码,以便只显示最后一个条目(在本例中为#22)?或者:是否还有一种方法只显示具有最低值(=最佳等级)的条目,在这种情况下为#7?

非常感谢帮助PHP新手! :)

2 个答案:

答案 0 :(得分:2)

请勿使用,因此不会为您循环排名,而是:

$output = mysqli_fetch_array( $readthis );
echo $output[count($output)-1]['Rank'];

答案 1 :(得分:2)

这更适合作为SQL问题:

SELECT users_2015.Rank FROM users_2015 WHERE users_2015.PlayerKey = '$PlayerKey' ORDER BY users_2015.Rank LIMIT 1