php – 为什么我的查询返回不正确的结果?

前端之家收集整理的这篇文章主要介绍了php – 为什么我的查询返回不正确的结果?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
大约两周前我最近问了一个类似的问题,但是我没有看到我的问题以我需要的方式运行.

我有一个从2个表中选择的查询;门票和回复.我正在从故障单表中选择信息,并且我从回复表中选择了存储有票证ID的信息.这就是我的问题.

我的查询显示回复超过0的票证,但我需要它才能显示票证信息,即使它没有任何回复.

我想知道(如果可能的话)是否有任何方法可以解决我的问题,如果有办法让它比我现在拥有它更简单.

现在它有点乱,但这是我的代码,用于查询显示故障单和回复.

if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    $id = trim($_GET['id']);
    $i = "";

    $ticket = $db->conn->query("
                                SELECT * FROM tickets
                                INNER JOIN replies ON tickets.id = '$id'") or die(MysqLi_error($db->conn));

    while($rows = $ticket->fetch_assoc()) {
        $i++;
        if($_SESSION['ticket_username'] == $rows['client']) {
            if($i <= 1) {
                $status = $rows['status'];
                echo '
                    <h3>'.$rows['subject'].'</h3><hr>

                    <div class="panel panel-danger">
                    <div class="panel-heading">
                        <h3 class="panel-title"><small>Created by '.$rows['client'].','.$timeAgo->inWords($rows['created_at']).'</small></h3>
                    </div>
                    <div class="panel-body">'.nl2br($rows['message']).'</div>
                    </div>
                ';
            }

            echo '
                <div class="panel panel-info">
                    <div class="panel-heading">
                        <h3 class="panel-title"><small>Reply from '.$rows['reply_username'].','.$timeAgo->inWords($rows['reply_time']).'</small></h3>
                    </div>
                    <div class="panel-body">'.nl2br($rows['reply_message']).'</div>
                    </div>
                ';

        } else {
            header("Location: index");
        }
    }
} else {
    header("Location: index");
}
更改查询.

使用LEFT JOIN而不是INNER JOIN

$ticket = $db->conn->query("SELECT * FROM tickets
LEFT JOIN replies ON tickets.id = '$id'") or die(MysqLi_error($db->conn));

说明:

> Inner Join仅返回两个表的值
比赛.这是两个圆圈的交集.
> Left Join返回左表中的所有行,无论如何
是否在正确的桌子上有任何匹配.

在您的情况下,如果您使用内部联接,它只返回那些有回复的票证.

图片来自here

猜你在找的PHP相关文章