Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用PHP连接具有每个表的特定ID的MySQL表_Php_Mysql - Fatal编程技术网

如何用PHP连接具有每个表的特定ID的MySQL表

如何用PHP连接具有每个表的特定ID的MySQL表,php,mysql,Php,Mysql,我不知道如何连接表并从每个表中获取信息。我有客户,他们进行了预订,当我点击特定客户时,我不仅需要客户表中关于他的信息,还需要预订表中id与他相关的信息 这是我的ER图,用于更好地理解数据库: 在所有预订的概览表中,根据其状态,我使用以下查询: <?php $query = $conn->query("SELECT * FROM `reservations` NATURAL JOIN `clients` NATURAL JOIN `houses` WHERE `

我不知道如何连接表并从每个表中获取信息。我有客户,他们进行了预订,当我点击特定客户时,我不仅需要客户表中关于他的信息,还需要预订表中id与他相关的信息

这是我的ER图,用于更好地理解数据库:

在所有预订的概览表中,根据其状态,我使用以下查询:

<?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 JOIN
clients
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 JOIN
clients
NATURAL JOIN
house
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()) {
    ...
}