如何访问具有相同名称的多个mysql行的不同表

时间:2013-12-18 12:39:23

标签: php mysql

我认为我接近解决方案,但并不完全明白。

我想要做的是从2个不同的表中获取product.naam和categorie.naam。 下面这段代码让我从两者中获取naam,我可以同时访问它们,但现在我想要产品的所有内容,而不仅仅是名称,然后我不知道如何从$行访问它...

赞赏每一点帮助

$kerst_sql = "  SELECT      product.naam, product.prijs AS p_naam, categorie.naam AS c_naam
                FROM        categorie_product, 
                            product, categorie 
                WHERE       product.product_id = categorie_product.product_product_id 
                AND         categorie_product.categorie_categorie_id = '1'
                GROUP BY    product.naam";
$result = mysqli_query($con, $kerst_sql);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo $row['p_naam'];
    echo $row['c_naam'];
}

1 个答案:

答案 0 :(得分:2)

如果您不想全部明确地列出它们,可以使用SELECT product.*, categorie.naam AS c_naam FROM ...,然后像这样访问它:

echo $row['naam']; // product.naam
echo $row['prijs']; // product.prijs
echo $row['c_naam']; // categorie.naam

但我认为选择您需要的特定列(并适当地对其进行别名)通常是一个好主意,而不是使用SELECT *。 IMO,你应该有一个真正的理由想要使用星号,而不仅仅是你不想输入所有的列名。


我将使用SELECT *的情况示例是当我知道我需要表格中当前存在的所有列 AND 以后可能添加的任何列。例如,如果我正在编写一个应用程序,其目的是显示表的全部内容。

在循环遍历列时,您需要注意记住,可以随时添加或删除列。因此,例如,如果您在HTML表格中显示它们,请确保不对列标题进行硬编码,因为如果在表格中添加或删除列,则会有一个额外或缺少的列。

如果这不是你想要做的事情,那么明确列出你想要选择的每一列可能会更好。