如何使用PHP从多个同名列中获取MySQL行的结果?

omg*_*omg 9 php mysql sql

select * from A left join B on A.columnc=B.columnd
Run Code Online (Sandbox Code Playgroud)

上面SQL返回的结果将包括A和B两列.

如果A和B有一些同名的列怎么办?

如何从PHP中检索值?

Aro*_*eel 18

您可能希望在查询中更明确.这样您就可以为列提供别名:

SELECT
  A.foo as a_foo,
  B.foo as b_foo
FROM A
LEFT JOIN B ON A.columnc = B.columnd
Run Code Online (Sandbox Code Playgroud)


quo*_*soo 7

答案是在PHP文档中实际的:

"如果结果的两列或多列具有相同的字段名称,则最后一列将优先.要访问同名的其他列,您需要使用数字索引访问结果mysql_fetch_row()或使用别名来添加别名名称.请参阅mysql_fetch_array() 有关别名的说明中的示例."

mysql_fetch_array()当您坚持在select语句中使用star时,Especialy 似乎是最佳候选者:

$row = mysql_fetch_array($result, MYSQL_BOTH) 
Run Code Online (Sandbox Code Playgroud)

然后你就可以参考unambigous领域$row[name],并通过ambigous一个$row[col_number],但限制你的代码可移植性(也许MySQL的下一个版本将会以不同的顺序返回列?).建议的解决方案是重写您的查询并列出所有必需的字段,而不是使用星形和对于模糊的字段 - 使用别名.


Eim*_*tas 2

您应该在 select 语句中使用列别名。