$query = 'SELECT *
FROM #__virtuemart_products AS a
LEFT JOIN #__virtuemart_products_en_gb as b ON a.virtuemart_product_id = b.virtuemart_product_id
INNER JOIN #__virtuemart_product_categories as c ON a.virtuemart_product_id=c.virtuemart_product_id
INNER JOIN #__virtuemart_categories_en_gb as d ON c.virtuemart_category_id = d.virtuemart_category_id
WHERE b.slug LIKE "'.$current.'%"
AND a.product_parent_id = 0
AND d.category_name="'.$query_title.'"' ;
$db->setQuery($query);
$options=$db->loadObjectList();
这是我用来解析数据库中的一些产品的查询。
问题是:
表
virtuemart_products_en_gb
有一个名为 slug
的列,表 virtuemart_categories_en_gb
也有一个名为 slug
的列。
当我使用
$row->slug
时,它解析了 virtuemart_categories_en_gb.slug
列。
因此,在我
var_dumped
ObjectList之后,我看到只有1列名为slug
。在 phpmyadmin 中使用相同的查询后,它返回 2 个名为 slug
的列。
我想我可以解决这个问题:选择每个单独的记录并将第一个片段设置为
slug1
,将第二个片段设置为slug2
。
例如:
SELECT
id, username, password,
b.slug as slug1, c.slug as slug2
等等。还有更好的办法吗?因为我需要解析很多列,这会使查询变得非常庞大。
为什么 php 查询仅返回 1 个名为 slug 的字段,而 phpmyadmin 则返回两个字段?
提前致谢。
您可以在选择同名列后指定
*
。例如,
SELECT *, b.slug as slug1,c.slug as slug2
FROM #__virtuemart_products as a
LEFT JOIN #__virtuemart_products_en_gb as b ON a.virtuemart_product_id = b.virtuemart_product_id
INNER JOIN #__virtuemart_product_categories as c ON a.virtuemart_product_id=c.virtuemart_product_id
INNER JOIN #__virtuemart_categories_en_gb as d ON c.virtuemart_category_id = d.virtuemart_category_id
WHERE b.slug LIKE "'.$current.'%" AND a.product_parent_id = 0
AND d.category_name="'.$query_title.'"