我正在开发一个使用php的洗衣服务系统。我有2个表,表客户和表票(这里有customer_id作为外键)。
所以我试图在用户登录后显示票证列表,包括来自表客户和表票证的数据。
我正在尝试加入2个表,其中customer_id作为链接加入..用于登录的用户名(使用$ session来存储登录客户的用户名)。这是我的代码:
$customerusername = $_SESSION['customerusername'];
$result = mysqli_query($conn,"SELECT * from TICKET INNER JOIN CUSTOMER ON TICKET.CUSTOMER_ID=CUSTOMER.CUSTOMER_ID
WHERE CUSTOMER_ID=(SELECT CUSTOMER_ID from CUSTOMER WHERE CUSTOMER_USER='$customerusername')");
然而我收到此错误警告:mysqli_fetch_array()期望参数1为mysqli_result,布尔值在下面的第一行中给出:
while($row = mysqli_fetch_array($result)){ //Creates a loop to loop through results
$found_row = true;
echo " <tr>
<td>".$row['TICKET_ID']."</td>
<td>".$row['TICKET_PICKUP']."</td>
<td>".$row['TICKET_PTIME']."</td>
<td>".$row['TICKET_DELIVERY']."</td>
<td>".$row['TICKET_DTIME']."</td>
<td>".$row['TICKET_STATUS']."</td>
<td>RM ".$row['TICKET_PRICE']."</td>
<td>".$row['PAYMENT_STATUS']."</td>
</tr>";
}
if ($found_row == false) {
echo "No Ticket Submitted";
}
出了什么问题?
答案 0 :(得分:1)
您必须在表上使用别名来指定具有相同名称的列,并避免出现模糊错误。
您的CUSTOMER_ID
出现在您的两张桌子中。所以MySQL无法知道你在谈论哪一列。
您可以尝试这样的事情:
$customerusername = $_SESSION['customerusername'];
$result = mysqli_query($conn,
"SELECT * from TICKET t
INNER JOIN CUSTOMER c ON t.CUSTOMER_ID=c.CUSTOMER_ID
WHERE t.CUSTOMER_ID=(SELECT CUSTOMER_ID from CUSTOMER WHERE CUSTOMER_USER='$customerusername')");
答案 1 :(得分:0)
where子句中的第二个'CUSTOMER_ID'是不明确的,因此查询引擎感到困惑。正如@syscall所提到的,您需要为表格设置别名。此外,您不需要React.createElement(LinkChart, {xDomainRange:[0, 100], ...})
子句中的子查询。您已经可以访问customer表,因此只需在您的join中引用它:
WHERE
答案 2 :(得分:0)
您的查询中不需要第二个Select语句。当您已经加入客户表时,您可以执行以下操作:
$customerusername = $_SESSION['customerusername'];
$result = mysqli_query($conn,
"SELECT * from TICKET t
INNER JOIN CUSTOMER c ON t.CUSTOMER_ID=c.CUSTOMER_ID
WHERE c.CUSTOMER_USER="'.$customerusername.'")";