如何解决PDO在提取时会自动走样?
幕后似乎没有办法做到这一点。显式别名是唯一的方法。
解决方法
我有以下两个表:
foo:
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”等)从联接中取回 所有
列,所以我不是否需要为查询中的每一列指定和别名?
我已经阅读了有关各种访存模式的所有文档,并尝试了大多数标志/选项,但似乎仍然找不到我想要的东西。
更新:
使用PDO::FETCH_ASSOC
,来自的列foo
似乎被来自的列覆盖bar
:
array(3) {
["ID"]=>
string(1) "1"
["DATA"]=>
string(5) "bar 1"
["FOO_ID"]=>
string(1) "1"
}
使用PDO::FETCH_NUM
来自两个,列foo
和bar
出现,为了,但没有任何的方式来识别哪些列来自哪个表,通过了解在每个表和这些列的确切顺序列数除外(容易出错):
array(5) {
[0]=>
string(1) "1"
[1]=>
string(5) "foo 1"
[2]=>
string(1) "1"
[3]=>
string(1) "1"
[4]=>
string(5) "bar 1"
}
使用PDO::FETCH_BOTH
,我们似乎遇到了PDO::FETCH_ASSOC
和PDO::FETCH_NUM
合并时遇到的相同问题,并创建了一个非常难以理解的结果集:
array(8) {
["ID"]=>
string(1) "1"
[0]=>
string(1) "1"
["DATA"]=>
string(5) "bar 1"
[1]=>
string(5) "foo 1"
[2]=>
string(1) "1"
["FOO_ID"]=>
string(1) "1"
[3]=>
string(1) "1"
[4]=>
string(5) "bar 1"
}
理想情况下,结果集应类似于以下内容:
array(5) {
["FOO.ID"]=>
string(1) "1"
["FOO.DATA"]=>
string(5) "foo 1"
["BAR.ID"]=>
string(1) "1"
["BAR.FOO_ID"]=>
string(1) "1"
["BAR.DATA"]=>
string(5) "bar 1"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。