我最近在兩週前問了一個類似的問題,但我沒有看到讓我的問題按照我需要的方式工作。爲什麼我的查詢返回不正確的結果?
我有一個查詢是從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");
}
您可以簡單地通過分開查詢來解決它。首先獲取所有門票。遍歷票證並獲取每張票證的所有答覆。 – Peter
我在之前的項目上做了類似的工作,但是我希望這次將它合併爲一個查詢。 – Jon