我有以下 Mysql 表:
1) 产品
2) 产品图片
3) 产品日期时间
4) 产品菜单
5) 厨师简介
我需要将这 5 个表中的所有数据显示到名为 menu-details.php 的页面
所有表都有外键
作为products
表id的p_id
,并且某些表具有相同p_id
的多个数据>。
为了完成此任务,我使用以下 mysql 连接查询:
$query = mysqli_query($conn, "SELECT p.p_id, p.p_title, p.p_description,
p.p_price, p.p_availability, p.delivery_option, p.event_location,
pimg.p_large_image, pimg.p_small_image, pdt.date, pm.p_menu_title,
pm.p_menu_description, pm.p_menu_price, pm.p_menu_availability, chef.fname,
chef.lname, chef.chef_details FROM products as p LEFT JOIN product_images as
pimg ON p.p_id = pimg.p_id LEFT JOIN product_date_time as pdt ON pdt.p_id =
p.p_id LEFT JOIN product_menu as pm ON pm.p_id = p.p_id LEFT JOIN
chef_profile AS chef ON chef.u_id = p.u_id WHERE p.p_id = '$mid' ") or
die('wrong query');
为了显示数据,我使用以下 php 代码:
$result = mysqli_fetch_array($query);
$menu_title = htmlspecialchars($result['p_title']);
我的问题
我应该使用 5 个唯一的 sql 查询来向该 menu_details.php 页面显示数据吗?
现在,此查询显示那些表中具有相同
p_id
的多个数据的单个记录。我需要显示具有相同p_id
和多个数据的所有数据。我该怎么做?例如:我在
product_images
表中有以下数据:pimg_id p_large_image p_id u_id 1 name 203 25 1 name 204 26 1 name 204 25 1 name 205 27 1 name 205 28
因此,如果我使用 php while
循环,它会显示该表中的所有数据,但应该显示基于 p_id
的所有数据,例如 p_id
= 204
while($result = mysqli_fetch_array($query)) {
echo $menu_l_image = htmlspecialchars($result['p_large_image']);
echo '<br/>';
}
最佳答案
如果 p.id 是整数,则删除 $mid 形式的单引号
"SELECT
p.p_id,
p.p_title,
p.p_description,
p.p_price,
p.p_availability,
p.delivery_option,
p.event_location,
pimg.p_large_image,
pimg.p_small_image,
pdt.date,
pm.p_menu_title,
pm.p_menu_description,
pm.p_menu_price,
pm.p_menu_availability,
chef.fname,
chef.lname,
chef.chef_details
FROM products as p
LEFT JOIN product_images as pimg ON p.p_id = pimg.p_id
LEFT JOIN product_date_time as pdt ON pdt.p_id = p.p_id
LEFT JOIN product_menu as pm ON pm.p_id = p.p_id
LEFT JOIN chef_profile AS chef ON chef.u_id = p.u_id
WHERE p.p_id = $mid "
之前对您可以使用的 $mid 变量进行了适当的清理
"SELECT
p.p_id,
p.p_title,
p.p_description,
p.p_price,
p.p_availability,
p.delivery_option,
p.event_location,
pimg.p_large_image,
pimg.p_small_image,
pdt.date,
pm.p_menu_title,
pm.p_menu_description,
pm.p_menu_price,
pm.p_menu_availability,
chef.fname,
chef.lname,
chef.chef_details
FROM products as p
LEFT JOIN product_images as pimg ON p.p_id = pimg.p_id
LEFT JOIN product_date_time as pdt ON pdt.p_id = p.p_id
LEFT JOIN product_menu as pm ON pm.p_id = p.p_id
LEFT JOIN chef_profile AS chef ON chef.u_id = p.u_id
WHERE p.p_id = ". $mid . ";"
关于php - 如何使用sql JOIN查询显示多个表中的所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37466725/