我试图在他们的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
时,我会获得相应的id
和population
值,但name
键的值为null
,即使我在table2
中有城市名称。
答案 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
如果您不需要所有数据,最好不要使用*
。它往往导致更多的错误和更难维护。