我在数据库中有三个表
类别: 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) ""
}
}
答案 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注入。