如果出错,选择多个表将不返回结果

时间:2014-05-13 15:20:05

标签: php sql select multiple-tables

我正在制作排行榜。要获取所有信息,我需要选择多个表,因为它必须在同一个while语句中。

我正在使用此代码:

$result = mysqli_query($con, "SELECT *, @rn := @rn + 1 as Rank
FROM Leaderboard_Tag, Player_Data WHERE Player_Data.UUID=Leaderboard_Tag.UUID, (SELECT     @rn := 0 ) r
ORDER BY Wins,Got_Tagged DESC LIMIT 0,10");

这就是为了表明:

$rank = 1;

                    if ($result->num_rows > 0) {
                        while ($row = mysqli_fetch_assoc($result)) {
                            $Username=$row['Leaderboard_Tag.Username'];
                            $Tokens = $row['Player_Data.Tokens'];
                            $Wins=$row['Leaderboard_Tag.Wins'];
                            $Got_Tagged = $row['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++;
                        }
                    }

由于某种原因,它不会返回表中的任何内容。 http://puu.sh/8KJko.png

但它确实在第92行返回错误:

if ($result->num_rows > 0) {

正如我所说,我在同一个数据库中有2个表。 Player_Data和Leaderboard_Tag。每个用户都有自己的唯一ID。在两个表格中都是一样的。

有什么问题?它之前有效,没有使用此代码选择多个表:

$result = mysqli_query($con, "SELECT Username,Wins,Got_Tagged,@rn := @rn + 1 as Rank
FROM Leaderboard_Tag, (SELECT @rn := 0 ) r
ORDER BY Wins,Got_Tagged DESC LIMIT 0,10");

1 个答案:

答案 0 :(得分:0)

似乎你的WHERE语句格式不正确:

  

... WHERE Player_Data.UUID = Leaderboard_Tag.UUID,(SELECT @rn:=&gt; 0)r

我认为它应该是这样的,除非子查询被错放并且属于FROM部分。

  

... WHERE Player_Data.UUID = Leaderboard_Tag.UUID AND @rn&gt; 0

话虽这么说,使用这样的变量(在同一语句中进行操作和比较)可能会根据MySQL文档给出意想不到的结果。