如何访问多个同名不同表的 mysql 行


How to access multiple mysql rows with same name different table

我认为我接近解决方案,但不太明白。

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

每一点帮助都值得赞赏

$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'];
}

如果您不想将它们全部显式列出,则可以使用 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 * 的情况的一个示例是,当我知道我需要表中当前存在的所有列以及将来可能添加的任何列时。例如,如果我正在编写一个应用程序,其目的是显示表的全部内容。

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

如果这不是您要尝试执行的操作,则最好仅显式列出要选择的每个列。