Php 获取时PDO自动别名?

Php 获取时PDO自动别名?,php,sql,pdo,Php,Sql,Pdo,我有以下两个表格: foo: ID NUMBER(38) DATA VARCHAR2(10) ID NUMBER(38) FOO_ID NUMBER(38) DATA VARCHAR2(10) 栏: ID NUMBER(38) DATA VARCHAR2(10) ID NUMBER(38) FOO_ID NUMBER(38) DATA VARCHAR2(10) 使用PDO发出以下查询时: SELECT * FROM foo f INNER

我有以下两个表格:

foo:

ID     NUMBER(38)
DATA   VARCHAR2(10)
ID     NUMBER(38)
FOO_ID NUMBER(38)
DATA   VARCHAR2(10)
栏:

ID     NUMBER(38)
DATA   VARCHAR2(10)
ID     NUMBER(38)
FOO_ID NUMBER(38)
DATA   VARCHAR2(10)
使用
PDO
发出以下查询时:

SELECT * FROM foo f INNER JOIN bar b ON (f.id = b.foo_id)
有没有办法以某种自动别名格式(例如“FOO.ID”、“FOO.DATA”、“BAR.ID”等)从联接中获取所有列,这样我就不需要指定和别名查询中的每一列

我已经阅读了各种各样的文档,并尝试了大多数,但似乎仍然找不到我想要的

更新:

ID     NUMBER(38)
DATA   VARCHAR2(10)
ID     NUMBER(38)
FOO_ID NUMBER(38)
DATA   VARCHAR2(10)
使用
PDO::FETCH_ASSOC
,来自
foo
的列似乎被来自
bar
的列覆盖:

使用
PDO::FETCH_NUM
,来自
foo
bar
的列按顺序显示,但无法识别哪些列来自哪些表,除非知道每个表中的列数和这些列的确切顺序(容易出错):

使用
PDO::FETCH_两者
,我们似乎遇到了与
PDO::FETCH_ASSOC
PDO::FETCH_NUM
组合相同的问题,并创建了一个令人难以理解的结果集:

理想情况下,结果集应类似于以下内容:


不,你不能,至少你需要:

SELECT f.*, b.* FROM foo f INNER JOIN bar b ON (f.id = b.foo_id)

在幕后似乎没有办法做到这一点。显式别名是唯一的方法。

尝试以下方法:

SELECT f.ID as fID, f.DATA as fDATA, b.*, FROM foo f INNER JOIN bar b ON (f.id = b.foo_id)

想法是只更改冲突的属性,这样就不会有更多的冲突。

您始终可以引用具有限定名称的列
tableName.columnName
,如果是这样,您的意思是什么(但它不是别名)。在select查询中显式列出列,而不是
select*
,这是一种好习惯…@MichaelBerkowski:不幸的是,在这种情况下,我没有这种奢侈。不过,这似乎并没有在PDO中给出期望的结果。提取时,没有任何键被标记为
f.id
或类似。实际上,它似乎实际上覆盖了非数字键,并产生了非常奇怪的结果集。