每当我运行这段代码时,我只得到test2
的值,因为列是相同的。
$Return = array();
$Output = $MySQLi->query("SELECT * FROM test1 as A LEFT JOIN test2 as B ON A.abc=B.abc");
while($Row = $Output->fetch_assoc()) {
$Return[] = $Row;
}
var_dump($Return);
这就是我得到的。
array(1) { [0]=> array(2) { ["abc"]=> string(1) "2" [123]=> string(1) "3" } }
有没有办法让fetch_assoc()返回这样的东西?
array(1) { [0]=> array(2) { ["A.abc"]=> string(1) "7" [A.123]=> string(1) "8" ["B.abc"]=> string(1) "2" [B.123]=> string(1) "3" } }
答案 0 :(得分:0)
您需要在选择数据时使用别名,最好只选择需要的而不是使用*
按如下所示编写查询: -
SELECT A.abc as 'A.abc',A.123 as 'A.123',B.abc as 'B.abc',B.123 as 'B.123'
FROM test1 as A
LEFT JOIN test2 as B
ON A.abc=B.abc
希望它会对你有所帮助: - )
答案 1 :(得分:0)
虽然一般来说这个问题的答案是在查询中定义别名,为了解决这个特殊的不便(以及无数个实际问题),你必须将所有类似的数据放到一个表中。这是唯一正确的方法。