加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

作为连接的结果获取PHP MySQL PDO列表名

发布时间:2020-12-13 17:23:33 所属栏目:PHP教程 来源:网络整理
导读:我在加入的不同表中有相同名称的字段.例如ticket.status,user.status和transaction.status.目前,查询只返回状态. 如何获取表名以防止类似的字段名称被覆盖,因此我可以区分字段. 简单的说: $data = array($eventId);$statement = $this-db-prepare("SELECT *
我在加入的不同表中有相同名称的字段.例如ticket.status,user.status和transaction.status.目前,查询只返回状态.

如何获取表名以防止类似的字段名称被覆盖,因此我可以区分字段.

简单的说:

$data = array($eventId);
$statement = $this->db->prepare("SELECT * FROM ticket,user,transaction 
                        WHERE ticket.eventId = ? 
                        AND ticket.userId = user.userId
                        AND ticket.transactionId = transaction.transactionId");

$statement->execute($data); 
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);

在我的研究中,我发现了常量PDO :: ATTR_FETCH_TABLE_NAMES看起来可能会有所帮助,但我不知道如何实现(我假设通过$statement-> setAttribute();不知何故).

我也担心它不起作用,因为PHP文档提到它依赖于驱动程序.

谢谢

解决方法

只需在select语句中添加新别名即可

$statement = $this->db->prepare("
    SELECT *,ticket.status AS ticket_status,user.status AS user_status,transaction.status AS transaction_status 
    FROM ticket,transaction 
    WHERE ticket.eventId = ? 
    AND ticket.userId = user.userId
    AND ticket.transactionId = transaction.transactionId
");

那你可以做

$rows[0]['user_status'];
$rows[0]['ticket_status'];
$rows[0]['transaction_status'];

如果您真的关心性能,那么返回的数据量会更大,因此您可以选择每个列而不是添加新别名,而在这样做时,会在状态列上添加别名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读