PHP/SQLi:尝试获取非对象的属性

PHP/SQLi:尝试获取非对象的属性,php,mysqli,notice,Php,Mysqli,Notice,因为我制作了排行榜,我发现我需要使用多个表来获取所有数据。由于我使用了MySQLi Join,它给了我以下错误: 注意:试图在第92行的/Applications/XAMPP/xamppfiles/htdocs/Minecraft User Info/leadboard/index.php中获取非对象的属性 这是第92行: if ($result->num_rows > 0) { 但在我使用SQL连接之前,它工作得很好。这是我的完整PHP代码: <?php

因为我制作了排行榜,我发现我需要使用多个表来获取所有数据。由于我使用了MySQLi Join,它给了我以下错误:

注意:试图在第92行的/Applications/XAMPP/xamppfiles/htdocs/Minecraft User Info/leadboard/index.php中获取非对象的属性

这是第92行:

if ($result->num_rows > 0) {
但在我使用SQL连接之前,它工作得很好。这是我的完整PHP代码:

<?php
                    $result = mysqli_query($con, "SELECT 
User_Management.Leaderboard_Tag.Username, User_Management.Leaderboard_Tag.Wins, User_Management.Leaderboard_Tag.Got_Tagged ,User_Management.Player_Data.Tokens @rn := @rn + 1 as Rank
FROM Leaderboard_Tag, Player_Data WHERE Player_Data.UUID=Leaderboard_Tag.UUID AND @rn > 0 )
ORDER BY Wins,Got_Tagged");
                    $rank = 1;

                    if ($result->num_rows > 0) {
                        while ($row = mysqli_fetch_assoc($result)) {
                            $Username=$row['User_Management.Leaderboard_Tag.Username'];
                            $Tokens = $row['User_Management.Player_Data.Tokens'];
                            $Wins=$row['User_Management.Leaderboard_Tag.Wins,'];
                            $Got_Tagged = $row['User_Management.Leaderboard_Tag.Got_Tagged'];

                            echo "<tr>
                            <td class=\"rank\">$rank</td>
                                <td><div class=\"row\">
                                        <div class=\"td-avatar\">
                                            <img class=\"avatar-small\" src=\"http://website.craftshark.net/avatar/avatar/$Username/40\">
                                        </div>
                                        <div class=\"td-user\">
                                            <a class=\"lb-username\" href=\"../player/$Username\">$Username</a>
                                            <br>
                                            <small class=\"lb-desc\"><i class=\"fa fa-star tokens-small\"></i> $Tokens</small>
                                        </div>
                                    </div></td>
                                <td class=\"got_tagged\">$Got_Tagged</td>
                                <td class=\"wins\">$Wins</td>
                                </tr>";
                            $rank++;
                        }
                    }

                    /* close connection */
                    mysqli_close($con);
                ?>

我看不出有什么不对劲。我以前从未使用过MySQLi-Join,但我搜索并遵循了有关如何实现这一点的教程。有人看到什么错误了吗?

您的SQL中有一个错误,这就是$result变量不是对象的原因。最好的方法是检查以下各项的结果:

$mysqli->connect_errno // returns 0 if all OK
$mysqli->error         // returns empty string if all OK
希望能有帮助

是:


你能显示你的表模式吗?
如果($result&&$result->num_rows>0)
可以解决你的问题,但是你的实际问题在于你的SQL语句,没有更多的信息很难诊断,比如上面提到的表模式用DB模式编辑了文章。那么你建议怎么做?像这样?:否则?现在它没有返回任何内容。我在将它们放在那里时遇到了以下错误:注意:未定义的变量:mysqli in/Applications/XAMPP/xamppfiles/htdocs/Minecraft User Info/leadboard/index.php第90行致命错误:调用未定义的函数文件\u put\u content()在第118行的/Applications/XAMPP/xamppfiles/htdocs/Minecraft User Info/leadboard/index.php文件内容(“log.txt,$mysqli->error,FILE\u APPEND”);它创建了一个空的log.txt文件。但我在您刚刚发送的代码行中遇到了这个错误:试图获取非对象inok的属性。这意味着$mysqli对象本身有问题,请查看连接字符串,检查连接
$mysqli->connect_errno // returns 0 if all OK
$mysqli->error         // returns empty string if all OK
if($mysqli){
   if( !$mysqli->connect_errno && !$mysqli->error){

    // your code here
   }
   else{
    // log/echo error 
    file_put_contents("log.txt", $mysqli->error, FILE_APPEND);
   }
}