我在加入的不同表中具有相同名称的字段。如ticket.status
,user.status
和transaction.status
。目前查询只返回status
。作为连接的结果获取PHP MySQL PDO列表名称
我怎样才能得到表名,以阻止覆盖类似的字段名称,所以我可以区分字段之间的区别。
简单地说:
$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 *'而改为'SELECT ticket.status AS ticket_status,user.status AS user_status,...'? – 2013-03-14 16:46:39
p.s我不是100%确定的,但我认为在'where'中做什么而不是'join'会更慢。 – webnoob 2013-03-14 16:52:13
@SeanBright,是的,但我确实尝试过,并没有解决问题 – 2013-03-14 17:04:43