Mysql 如何左键连接两个表

Mysql 如何左键连接两个表,mysql,pdo,Mysql,Pdo,数据库中有三个表 类别:id,类别 子类别:id、类别(category.id)、子类别 产品:id、p_名称、国家、类别(category.id)、子类别(sub_category.id) 当我执行此查询时,子类别为空,但当我删除product.category=cat.id上的LEFT JOIN cat时,子类别为空且子类别填写正确 在我的xamp localhost上,它可以正常工作,但当我将它上载到服务器上时,它会出现上述错误 SELECT * FROM product LEFT JO

数据库中有三个表

类别:id,类别

子类别:id、类别(category.id)、子类别

产品:id、p_名称、国家、类别(category.id)、子类别(sub_category.id)

当我执行此查询时,子类别为空,但当我删除product.category=cat.id上的
LEFT JOIN cat时,子类别为空且子类别填写正确

在我的xamp localhost上,它可以正常工作,但当我将它上载到服务器上时,它会出现上述错误

SELECT * FROM product 
LEFT JOIN subcat ON product.sub_category = subcat.id 
LEFT JOIN cat ON product.category = cat.id 
WHERE product.id = $id


array(1) {
  [0]=>
  array(16) {
    ["id"]=>
    string(1) "1"
    ["p_name"]=>
    string(80) "Agusha snak"
    ["country"]=>
    string(24) "croatia"
    ["category"]=>
    string(37) "baby feed"
    ["sub_category"]=>
    string(0) ""
  }
}

问题是表中有重复的列名。
fetch()
返回的关联数组将只包含具有相同名称的最后一列

使用别名来区分它们

SELECT p.*, c.category AS category_name, s.sub_category AS subcategory_name
FROM product AS p
LEFT JOIN subcat AS s ON p.sub_category = s.id 
LEFT JOIN cat AS c ON p.category = c.id 
WHERE p.id = $id

另外,您不应该将变量替换到查询中,而应该使用一个准备好的语句和
bindParam()
来防止SQL注入。

问题是表中有重复的列名。
fetch()
返回的关联数组将只包含具有相同名称的最后一列

使用别名来区分它们

SELECT p.*, c.category AS category_name, s.sub_category AS subcategory_name
FROM product AS p
LEFT JOIN subcat AS s ON p.sub_category = s.id 
LEFT JOIN cat AS c ON p.category = c.id 
WHERE p.id = $id

此外,您不应将变量替换到查询中,应使用预处理语句和
bindParam()
来防止SQL注入。

请分享您的错误消息。表的内容必须不同。您能显示一些示例数据和所需结果吗?@NikuNjRathod他们没有收到错误消息,只是得到了他们描述的不正确的结果。是的,没有执行错误消息查询,但子类别中应该有cookie。请共享您的错误消息。表的内容必须不同。您能显示一些示例数据和所需结果吗?@NikuNjRathod他们没有收到错误消息,只是得到了他们描述的不正确结果。是的,没有执行错误消息查询,但实际上子类别中应该有cookie