如何在连接的表上使用mysql_fetch_array,但是列具有相同的名称[duplicate]

问题描述 投票:6回答:2

可能重复:How to fetch result from MySQL row with multiple same-name columns with PHP?

我有两个表,它们共享相似的列名。

查询是:

SELECT a.name,b.name
FROM tablea a 
JOIN tableb b ON a.id = b.id

结果放入数组:

while ($row = mysql_fetch_array($results)){
   $aname = $row['name'];
}

一旦添加到第二张表中,我注意到$aname正在使用tableb的数据。

问题(s):如何存储两个name列,$row['a.name']不起作用。我的猜测可能是我需要对查询中的每个结果进行别名化。有什么建议么? 我是否应该避免以后再提供列名


I know mysql_* is deprecated. Save your energy.
php mysql sql
2个回答
8
投票

您的猜测是正确的。您需要为列创建一个ALIAS,以便可以唯一地获取它,

SELECT a.name Name1, b.name Name2
FROM tablea a 
JOIN tableb b ON a.id = b.id

然后您现在可以拨打电话

$row['Name1']

7
投票

有办法。

mysql_field_table()会在给定mysql_field_table()句柄和序数位置的情况下告诉您结果集字段的名称。与$result结合使用,应满足您的所有需求:

mysql_field_name()

例如,您可以将其包装到自己的mysql_field_name()函数中,从而为您提供一个以// Fetch the table name and then the field name $qualified_names = array(); for ($i = 0; $i < mysql_num_fields($result); ++$i) { $table = mysql_field_table($result, $i); $field = mysql_field_name($result, $i); array_push($qualified_names, "$table.$field"); } 为键的关联数组:

mysql_fetch_qualified_array
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.