Php 联接2个表,其中customer_id=$username

Php 联接2个表,其中customer_id=$username,php,mysql,Php,Mysql,我正在使用php开发一个洗衣服务系统。我有2张桌子、桌子上的顾客和桌子上的票(这里的外键是顾客id) 因此,我试图在用户登录后显示一个ticket列表,其中包含来自表customer和表ticket的数据 我正在尝试将customer_id作为链接联接的2个表联接。。用于登录用户名(使用$session存储登录客户的用户名)。这是我的密码: $customerusername = $_SESSION['customerusername']; $result = mysqli_query($con

我正在使用php开发一个洗衣服务系统。我有2张桌子、桌子上的顾客和桌子上的票(这里的外键是顾客id)

因此,我试图在用户登录后显示一个ticket列表,其中包含来自表customer和表ticket的数据

我正在尝试将customer_id作为链接联接的2个表联接。。用于登录用户名(使用$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";
        }
while($row=mysqli\u fetch\u array($result)){//创建一个循环来循环结果
$found\u row=true;
回声“
“$行['TICKET_ID']
“$行[‘收票’。”
“$row[‘票务时间’”。”
“$row[‘票务交付’]”
“$row['TICKET\u DTIME']”
“$row[‘票证状态’]”
RM.“$row[‘票价’]”
“$row[‘付款状态’]”
";
}
如果($found\u row==false){
回显“未提交票证”;
}

出了什么问题?

您必须在表上使用别名来指定具有相同名称的列,并避免不明确的错误

您的
CUSTOMER\u 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')");

where子句中的第二个“CUSTOMER_ID”不明确,因此查询引擎感到困惑。正如@syscall所提到的,您需要为表添加别名。另外,在
WHERE
子句中不需要子查询。您已经有权访问customer表,因此只需在联接中引用它:

SELECT * 
FROM TICKET t 
JOIN CUSTOMER c ON t.CUSTOMER_ID = c.CUSTOMER_ID 
WHERE c.CUSTOMER_USER='$customerusername'

查询中不需要第二条Select语句。当您准备好加入customer表时,可以执行以下操作:

$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.'")";

如果您得到了这个结果,则表示您的查询失败。执行
var\u转储($result)查看您得到了什么。它可能是
falseyes它是false..那么我的select语句是错的?我是这方面的新手。您可以使用
echo mysqli\u error($conn)
查看失败的内容。@Syscall似乎混淆了从这两个表中获取哪个客户id。。我尝试将where子句更改为where CUSTOMER.CUSTOMER\U ID=。。。现在它开始工作了!谢谢是的,这就是问题所在!谢谢现在开始工作了