gpt4 book ai didi

php - 为什么我的左连接在我的 php mysql 数据库中不起作用?

转载 作者:行者123 更新时间:2023-11-30 21:32:39 26 4
gpt4 key购买 nike

我正在尝试创建一个 sql 查询,它会显示一位用户在预订中选择的服务的价格。

所以我想从我的表 chosen_services 中选择 id_service 列,其中 id_reservation 对应于 $_SESSION['idReservation '] 得到这些服务的价格,最后计算出总价。

这是我在 mysql 中的 2 个表:https://ibb.co/NtgLLh7https://ibb.co/jkB0Qm6

这是我目前的查询:

$getPriceOfAllServices = $bdd->prepare(
'SELECT id_service
FROM CHOSEN_SERVICES
LEFT JOIN SERVICES ON CHOSEN_SERVICES.id_chosen_service = SERVICES.id_service
WHERE id_reservation = ?'
);
$getPriceOfAllServices->execute(array($_SESSION['idReservation']));
$getPriceOfAllServices = $getPriceOfAllServices->fetch();

我有这个错误:https://ibb.co/Wc1hLvz

提前致谢!

最佳答案

SELECT id_service

查询中涉及的两个表都有一个名为id_service 的列。由于您没有为列名添加前缀,MySQL 无法可靠地判断您指的是哪两个,因此它会引发“列名不明确”错误。

由于您正在使用 LEFT JOIN,您很可能想要返回来自表 CHOSEN_SERVICES 的列(因为其他列可能是 NULL ,当连接条件不匹配时)。

考虑:

SELECT CHOSEN_SERVICES.id_service 
FROM CHOSEN_SERVICES
LEFT JOIN SERVICES ON CHOSEN_SERVICES.id_chosen_service = SERVICES.id_service
WHERE id_reservation = ?

注意:请注意 WHERE 子句中的列 id_reservation 也没有前缀。虽然这不会产生相同的错误(因为该列仅存在于两个表之一中),但在涉及多个表时,最好始终为列添加前缀。另一个好习惯是使用表别名。

相应地,这是您的查询的新版本:

SELECT cs.id_service 
FROM chosen_services cs
LEFT JOIN services s ON cs.id_chosen_service = s.id_service
WHERE cs.id_reservation = ?

关于php - 为什么我的左连接在我的 php mysql 数据库中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com