Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示两个不同表中具有相同名称的列?_Php_Sql - Fatal编程技术网

Php 如何显示两个不同表中具有相同名称的列?

Php 如何显示两个不同表中具有相同名称的列?,php,sql,Php,Sql,我从两个表中进行了SQL查询。一切正常,但问题是这两个表具有相同的字段名,在我不知道如何正确显示它们之后,如何区分$data['aaa']来自表1,而$data['aaa']来自表2 以下是我的SQL查询: $query_str = "SELECT cm.id, cm.global_category_id, cm.num, cm

我从两个表中进行了SQL查询。一切正常,但问题是这两个表具有相同的字段名,在我不知道如何正确显示它们之后,如何区分$data['aaa']来自表1,而$data['aaa']来自表2

以下是我的SQL查询:

    $query_str = "SELECT 
                    cm.id,
                    cm.global_category_id,
                    cm.num,
                    cm.menu_lv,
                    cm.menu_ru,
                    cm.menu_en,
                    u.id,
                    u.menu_lv,
                    u.menu_ru,
                    u.menu_en
                    FROM products_category cm, products_global_category u
                    WHERE cm.global_category_id = u.id
                    ";
并显示数据

<? foreach ($sub_category_list as $line) : ?>
<tr>
   <td><?=$line['menu_lv']?></td>   <---- here I want to display data from products_global_category u       
   <td><?=$line['sub_menu_lv']?></td>   <---- products_category cm
   <td><?=$line['sub_menu_ru']?></td>   <---- products_category cm
   <td><?=$line['sub_menu_en']?></td>   <---- products_category cm
</tr>
<? endforeach; ?>

作为一种解决方案,您可以更改SQL查询,为具有相同名称的字段提供别名

例如:

SELECT somefield AS othername FROM table.
SELECT
   table1.pid AS page_id,
   table2.pid AS product_id
FROM
   table1
LEFT JOIN
   table2
ON
   table1.id = table2.id
在这种情况下,
somefield
字段将通过别名
othername
可用

就你而言:

$query_str = "SELECT 
                cm.id AS cm_id,
                cm.global_category_id,
                cm.num,
                cm.menu_lv AS cm_menulv,
                cm.menu_ru AS cm_menuru,
                cm.menu_en AS cm.menuen,
                u.id as u_id,
                u.menu_lv AS u_menulv,
                u.menu_ru AS u_menuru,
                u.menu_en AS u_menuen
                FROM products_category cm, products_global_category u
                WHERE cm.global_category_id = u.id
                ";
然后在PHP中:

$line['u_menulv'] //Access field menu_lv from products_global_category table
$line['cm_menulv'] //Access field menu_lv from products_category table
编辑:
mysql\u fetch\u数组中

如果结果的两列或多列具有相同的字段名,则 最后一列将优先。要访问 如果名称相同,则必须使用列的数字索引或 列的别名。对于别名列,您无法访问 具有原始列名的内容


换句话说,可以创建如上所示的别名,也可以通过数组的数字索引访问字段。

只需为要打印的相互冲突的记录添加别名,例如:

SELECT somefield AS othername FROM table.
SELECT
   table1.pid AS page_id,
   table2.pid AS product_id
FROM
   table1
LEFT JOIN
   table2
ON
   table1.id = table2.id
然后在您的PHP中,您可以按如下方式对其进行回显:

while ($row = mysql_fetch_assoc($res)) {
    echo $row['page_id'];
    echo $row['product_id'];
}
希望这有帮助