首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO Join,避免覆盖结果数组中同名的键

PDO Join,避免覆盖结果数组中同名的键
EN

Stack Overflow用户
提问于 2013-07-22 23:08:43
回答 2查看 632关注 0票数 0

我正在使用PDO进行连接,如下所示:

代码语言:javascript
复制
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返回给我的数组中,许多内容被覆盖。

我使用的是:

代码语言:javascript
复制
   $statement = $this->pdo->prepare($query);

    if ($statement->execute($param))
        return $statement->fetchAll(PDO::FETCH_ASSOC);
    return false;

PDO返回一个关联数组,但是如何避免覆盖来自不同表的同名列呢?

EN

回答 2

Stack Overflow用户

发布于 2020-02-19 00:02:57

您可以使用PDO::FETCH_NAMED,请参阅https://phpdelusions.net/pdo/fetch_modes#FETCH_NAMED

票数 1
EN

Stack Overflow用户

发布于 2013-07-22 23:28:04

  • 非常不推荐使用.*,因为:

代码语言:javascript
复制
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查询中使用别名,如下所示

代码语言:javascript
复制
SELECT products.id prodId, orders.id orderId FROM Orders LEFT JOIN Products ON (prodId = orders.product_id) WHERE orderId = @oid
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17791076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档