我有一个PHP函数来获取用户数据,但连接的表共享常见的字段名,如id
、name
等。我在这里使用SELECT *
。如何显示数据。
function userData(){
global $pdo;
$stmt = $pdo->prepare("SELECT * FROM users
LEFT JOIN cities ON users.city = cities.id
LEFT JOIN states ON cities.state_id = states.id
LEFT JOIN countries ON states.country_id = countries.id
WHERE users.id = :id");
$stmt-> bindValue(':id', sessionUser());
$stmt-> execute();
return $stmt->fetch();
}
$user = userData();
我想要一些类似的东西:
$user['cities.name']
$user['states.name']
但这行不通。该怎么办?
您需要为SQL列提供别名。
SELECT
`cities`.`name` as 'cities.name',
`states`.`name` as 'states.name',
(etc)
否则(我相信(PHP会误解并覆盖键(列名(相同的值。
您需要添加想要返回的字段,即
$stmt = $pdo->prepare("SELECT * FROM users,
cities.name as cityName
states.name as stateName
LEFT JOIN cities ON users.city = cities.id
LEFT JOIN states ON cities.state_id = states.id
LEFT JOIN countries ON states.country_id = countries.id
WHERE users.id = :id");
然后使用:
$user['cityName']
$user['stateName']