php – 为什么我的查询返回不正确的结果?
发布时间:2020-12-13 16:26:12 所属栏目:PHP教程 来源:网络整理
导读:大约两周前我最近问了一个类似的问题,但是我没有看到我的问题以我需要的方式运行. 我有一个从2个表中选择的查询;门票和回复.我正在从故障单表中选择信息,并且我从回复表中选择了存储有票证ID的信息.这就是我的问题. 我的查询只显示回复超过0的票证,但我需要
大约两周前我最近问了一个类似的问题,但是我没有看到我的问题以我需要的方式运行.
我有一个从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仅返回两个表的值 在您的情况下,如果您使用内部联接,它只返回那些有回复的票证. 图片来自here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |