我正在使用PDO进行连接,如下所示:
SELECT users.*,images.*, sessions.*,social.*,videos.*,teams.*,achievements.*,_achievements_list.* FROM users LEFT JOIN images ON users.user_id=images.user_id LEFT JOIN sessions ON users.user_id=sessions.user_id LEFT JOIN social ON users.user_id=social.user_id LEFT JOIN videos ON users.user_id=videos.user_id LEFT JOIN teams ON users.user_id=teams.user_id LEFT JOIN achievements ON users.user_id=achievements.user_id LEFT JOIN _achievements_list ON achievements.achievement_id=_achievements_list.parent_id WHERE users.nickname = 'something'问题是有些表的某些列具有相同的名称,因此在PDO返回给我的数组中,许多内容被覆盖。
我使用的是:
$statement = $this->pdo->prepare($query);
if ($statement->execute($param))
return $statement->fetchAll(PDO::FETCH_ASSOC);
return false;PDO返回一个关联数组,但是如何避免覆盖来自不同表的同名列呢?
发布于 2020-02-19 00:02:57
您可以使用PDO::FETCH_NAMED,请参阅https://phpdelusions.net/pdo/fetch_modes#FETCH_NAMED
发布于 2013-07-22 23:28:04
1. if the table structure changes, then your column indexes change, and if you used to read by index, then Too bad.
2. mostly, you really dont need all the columns and therefore you will reduce the amount of data you retrieve from the server (if it is remote then it might even be meanningful)
无论如何,如果您不使用.*,那么您可以在SQL查询中使用别名,如下所示
SELECT products.id prodId, orders.id orderId FROM Orders LEFT JOIN Products ON (prodId = orders.product_id) WHERE orderId = @oidhttps://stackoverflow.com/questions/17791076
复制相似问题