作为连接的结果获取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']; 如果您真的关心性能,那么返回的数据量会更大,因此您可以选择每个列而不是添加新别名,而在这样做时,会在状态列上添加别名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |