在INNER JOIN之后使用PHP从第二个表访问值

时间:2018-03-13 19:22:00

标签: php mysql

我试图在他们的id上加入两个表,然后使用键值填充一个空数组。 table2还有一个我希望使用的city_name列。

但是,在使用INNER JOIN加入id上的两个表后,我似乎无法从第二个表中访问city_name值(但是从第一个表中获取值的工作正常)。

这是我的代码:

$city_list = array();
$i = 0;

$q = "SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.city_id";
$res = $mysql_query($q);

while($row = mysql_fetch_assoc($res) {
    $city_list[$i]['id'] = $row['id']; // returns the id from table1, which is also identical to the city_id from table2
    $city_list[$i]['population'] = $row['city_population']; // returns the city_population value from table1 
    $city_list[$i]['name'] = $row['city_name']; // returns null, even though the value exists in table2
    $i++;
}

打印$city_list时,我会获得相应的idpopulation值,但name键的值为null,即使我在table2中有城市名称。

2 个答案:

答案 0 :(得分:4)

只需选择您真正需要的列。

SELECT table1.id, table1.city_population, table2.city_name 
FROM table1 
INNER JOIN table2 ON table1.id=table2.city_id

答案 1 :(得分:2)

您可以使用别名选择列名,以便您可以根据需要访问这两个列。例如,将查询更改为:

SELECT *, table2.user_name as table2_user_name 
FROM table1 
INNER JOIN table2 ON table1.id=table2.city_id

如果您不需要所有数据,最好不要使用*。它往往导致更多的错误和更难维护。