gpt4 book ai didi

php - 获取时 PDO 自动别名?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:04 25 4
gpt4 key购买 nike

我有以下两个表:

富:

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”)从连接中取回所有列"等),这样我就不需要为查询中的每一列指定别名了?

我已经阅读了关于各种 fetch modes 的所有文档, 并试验了大部分 flags/options , 但似乎仍然找不到我要找的东西。

更新:

使用 PDO::FETCH_ASSOCfoo 中的列似乎被 bar 中的列覆盖:

array(3) {
["ID"]=>
string(1) "1"
["DATA"]=>
string(5) "bar 1"
["FOO_ID"]=>
string(1) "1"
}

使用 PDO::FETCH_NUMfoobar 中的列按顺序出现,但没有任何方法识别哪些列来自哪些表,除非知道每个表中的列数和这些列的确切顺序(容易出错):

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"
}

最佳答案

不,你不能,至少你需要这样做:

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

关于php - 获取时 PDO 自动别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com