将SQL COUNT结果放入php变量中


Putting SQL COUNT result into a php variable

我遇到的问题希望相当简单,但我已经在各种不同的解决方案中徘徊了几天,运气不好。我有一个php脚本,它正在做一些不同的事情来返回一组结果,到目前为止,我可以得到一个球员的名字,yield命中分数以及上面的5和下面的4。

为了解释我的问题,想象一下活跃玩家的分数是第432个最高分,而不是显示为1。2。3。以此类推,我需要在他的分数旁边显示432,在上面的分数旁边显示431,以此类推。

我计划通过运行COUNT查询来检查有多少分数高于玩家(以获得他在列表中的位置),然后将用于收听分数位置的$ I变量替换为$ I = $resultfromcount - 4,以便它将显示每个分数的正确计分板位置。我在使用$ I来存储正确的东西时遇到了问题,遵循几种不同的理论解决方案都不起作用。对于一些我得到的错误与"访问非对象中的成员函数"有关,或者与其他$ I只是空的。

下面是我的代码(其中一些是不相关的,但我认为最好是显示整个脚本)剥离了我尝试过的不同解决方案,下面你看到的只是为$ I返回null:
    // CONNECT TO THE DATABASE
$DB_NAME = 'mydb';
$DB_HOST = 'myhost';
$DB_USER = 'myuser';
$DB_PASS = 'mypass';

$name = ($_GET['name']);

$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s'n", mysqli_connect_error());
    exit();
}
// Querying the several queries needed and combining them
$allquery = "SELECT *
             FROM `scores`";

$scoreresult = "SELECT `score` 
                FROM `scores` 
                WHERE `name` = '$name'";
$userscorequery = " SELECT * FROM 
                   (
                        (
                        SELECT * FROM
                        (
                            SELECT *
                            FROM `scores`
                            WHERE `score` >= ($scoreresult) ORDER BY `score` ASC LIMIT 5
                        ) `finalResult` ORDER BY `score` DESC
                        )
                        UNION ALL
                        (
                        SELECT * FROM
                        (
                            SELECT *
                            FROM `scores`
                            WHERE `score` < ($scoreresult) ORDER BY `score` DESC LIMIT 5
                        ) `secondFinal` ORDER BY `score` ASC
                        )
                    ) `nearScores` ORDER BY `score` DESC";    

$indexing = "SELECT COUNT(*) 
                   `index`
                    FROM `scores`
                    WHERE `score` > ($scoreresult)";
$indexresult = $mysqli->query($userscorequery) or die ($mysqli->error.__LINE__);
$result = $mysqli->query($userscorequery) or die($mysqli->error.__LINE__);
if($result->num_rows > 0) {
    $ind = $indexresult->fetch_assoc();
    $i = $ind[0];
    echo $i;
} else {
    echo 'NO INDEX';
}
// GOING THROUGH THE DATA
if($result->num_rows > 0) {
    while ( $row = $result->fetch_assoc() ) {
        echo "$i. 't 't {$row['name']} 't 't 't 't 't {$row['score']}m 'n";
        $i++;
    }
}
else {
    echo 'NO RESULTS';  
}
// CLOSE CONNECTION
mysqli_close($mysqli);

对于那些想知道,我修复了这个由于有一个简单的问题;当我应该运行索引查询时,我在第一次mysqli运行中运行了$userscore查询!愚蠢的错误,但我们都犯过;o