大约两周前我最近问了一个类似的问题,但是我没有看到我的问题以我需要的方式运行.
我有一个从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");
}
Run Code Online (Sandbox Code Playgroud)
Pup*_*pil 14
更改查询.
使用LEFT JOIN而不是INNER JOIN
$ticket = $db->conn->query("SELECT * FROM tickets
LEFT JOIN replies ON tickets.id = '$id'") or die(mysqli_error($db->conn));
Run Code Online (Sandbox Code Playgroud)
说明:
在您的情况下,如果您使用内部联接,它只返回那些有回复的票证.
图片来自这里
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |