微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDO在提取时会自动走样?

如何解决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来自两个,列foobar出现,为了,但没有任何的方式来识别哪些列来自哪个表,通过了解在每个表和这些列的确切顺序列数除外(容易出错):

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_ASSOCPDO::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 举报,一经查实,本站将立刻删除。