我在加入的不同表中具有相同名稱的字段。如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