UPDATE1
我搜索了 PDO 文档并找到了指令PDO::ATTR_FETCH_TABLE_NAMES
。文档说它使驱动程序在列名之前返回表名。表名将通过“.”(点)与列名分开。
您可以尝试使用此指令来解决您的问题,但如果没有别名,它可能无法工作。
请尝试以下操作:$PDO->setAttribute(PDO::ATTR_FETCH_TABLE_NAMES, true);
UPDATE2
我从提问者那里找到了以下问题和答案,他们使用这个指令来解决他的问题,类似于你的问题。
SELECT 结果与列的表名
这个问题重复了之前提出的其他几个问题:
PDO: fetchAll() with duplicate column name on JOIN
PDO Auto-aliasing when fetching?
所以,第一个答案是:“不,如果不为每一列设置别名,你就不能这样做。”
解决方法是使用PDO::FETCH_NUM
,它将返回一个已获取列的编号数组。但我不推荐它,因为如果您更改表的结构,您的 PHP 脚本可能会损坏。
无论如何,选择某些列并设置别名而不是全部仍然是一个好习惯*
。像这样:
SELECT T1.ID1 as ID1, T1.ID2 as ID2, T1.name as T1_name, AAA.name as AAA_name, BBB.ID as BBB_name
FROM
T1
INNER JOIN
T2 AAA
ON AAA.ID = T1.ID1
INNER JOIN
T2 BBB
ON BBB.ID = T1.ID2