如何左连接两个表mysql

时间:2018-04-26 10:08:34

标签: mysql pdo

我在数据库中有三个表

类别: ID,类别

Sub_category: id,category(category.id),sub_category

产品: id,p_name,国家/地区,类别(category.id),sub_category(sub_category.id)

当我执行此查询时,sub_category为空,但当我删除LEFT JOIN cat ON product.category = cat.id时,类别为空并且正确填充了sub_category

在我的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) ""
  }
}

1 个答案:

答案 0 :(得分:2)

问题是表中有重复的列名。 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注入。