$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有一个名叫鼻涕虫的列表:virtuemart_categories_en_gb还有一个名叫鼻涕虫的列
当我使用 $row->slug 时,它解析了virtuemart_categories_en_gb slug。
因此,在我var_dumped对象列表后,我看到只有 1 个名为 slug 的列。在 phpmyadmin 中使用相同的查询后,它向我返回了 2 个名为 slug 的列。
我想我可以解决这个问题,选择每一个记录个体并将第一个 slug 设置为 slug1,第二个设置为 slug2。例如:SELECT id,username,password,b.slug as slug1,c.slug as slug2
等有没有更好的方法?因为我需要解析非常多的字段,这将使查询非常庞大。为什么 php 查询只返回 1 个名为 slug 的字段,而 phpmyadmin 同时返回两个 em ?提前谢谢。
您可以在选择具有相同名称的列后指定*
。例如
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.'"