Mysql 如何左键连接两个表
数据库中有三个表 类别:id,类别 子类别:id、类别(category.id)、子类别 产品:id、p_名称、国家、类别(category.id)、子类别(sub_category.id) 当我执行此查询时,子类别为空,但当我删除product.category=cat.id上的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
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