如何用PHP连接具有每个表的特定ID的MySQL表
我不知道如何连接表并从每个表中获取信息。我有客户,他们进行了预订,当我点击特定客户时,我不仅需要客户表中关于他的信息,还需要预订表中id与他相关的信息 这是我的ER图,用于更好地理解数据库: 在所有预订的概览表中,根据其状态,我使用以下查询:如何用PHP连接具有每个表的特定ID的MySQL表,php,mysql,Php,Mysql,我不知道如何连接表并从每个表中获取信息。我有客户,他们进行了预订,当我点击特定客户时,我不仅需要客户表中关于他的信息,还需要预订表中id与他相关的信息 这是我的ER图,用于更好地理解数据库: 在所有预订的概览表中,根据其状态,我使用以下查询: <?php $query = $conn->query("SELECT * FROM `reservations` NATURAL JOIN `clients` NATURAL JOIN `houses` WHERE `
<?php
$query = $conn->query("SELECT * FROM `reservations` NATURAL JOIN `clients` NATURAL JOIN `houses` WHERE `status` = 'Pending' ORDER BY firstName")
or die(mysqli_error());
hile($fetch = $query->fetch_array()){
?>
这应该可以通过PDO或MySQLi工作并绑定ID您需要将客户机ID
签入WHERE
子句,而不是签入状态
$stmt = $conn->prepare("
SELECT *
FROM `reservations`
NATURAL JOIN `clients`
NATURAL JOIN `houses`
WHERE client_id = ?");
$stmt->bind_param("i", $_GET['client_id']);
$query = $stmt->execute();
while ($fetch = $query->fetch_array()) {
...
}
您可以尝试这样的操作:SELECT*FROM
reservations`NATURAL JOINclients
reservation.client\u id
=1和status
='Pending'ORDER BY reservation\u id`,它将获得id=1且状态为Pending的客户端的所有预订。但它需要是动态的,因此,我无法在查询中指定确切的ID,它必须类似于…WHERE reservations.client\u ID=client\u ID
,但它不起作用。您应该使用准备好的语句
。在这种情况下,我显示了sql
,它假设返回您需要的数据。这里是链接:ER图不应该显示预订
和客户
之间的链接吗?您有一个错误。需要一个论点。请考虑切换错误模式。在client
或house
表中没有id
列。这如何解决显示特定客户id的数据的问题?我相信他可以添加简单where子句:-)我固定了id。如果他知道如何添加简单where子句,他就不会问这个问题了,他会吗?你所做的就是用做同样事情的子句上的显式的替换自然连接
。你说得很好,其实没那么难:)谢谢你解决了这个问题!不过我有一个问题,现在我只能看到一个预订,即使我点击的客户有多个预订。你知道怎么处理吗?那不应该发生。所有的预订是否都是status=Pending
?不,它们处于不同的状态,但我从查询中删除了:$stmt=$pdo->prepare('SELECT*from
reservations`NATURAL JOINclients
NATURAL JOINhouse
WHERE client_id=?')`然后它应该找到所有的。
SELECT r.*, c.*, h.*
FROM `reservations` r
LEFT JOIN `clients` c ON (c.client_id = r.client_id)
LEFT JOIN `houses` h ON (h.house_id = r.house_id)
WHERE r.status = 'Pending' AND c.client_id = '$0'
ORDER BY c.firstName ASC
$stmt = $conn->prepare("
SELECT *
FROM `reservations`
NATURAL JOIN `clients`
NATURAL JOIN `houses`
WHERE client_id = ?");
$stmt->bind_param("i", $_GET['client_id']);
$query = $stmt->execute();
while ($fetch = $query->fetch_array()) {
...
}