mysql_fetch_assoc无法访问similars列名

时间:2012-06-12 17:22:49

标签: php mysql

我的查询中有多个表

$query = mysql_query("SELECT * FROM reservation r, users u ...")

while( $fetch = mysql_fetch_assoc($query)){
    if($fetch['u.id'] == $fetch['r.id']) 
    ...

这是问题我在表上有相同的列名,当我尝试将预订的ID与用户的ID进行比较时,我只得到用户的ID !!!

我可以将“*”替换为列名,并使用AS (SELECT s.id as sid ...)更改其名称,但是有更简单的方法吗? 对于e.x:

1 个答案:

答案 0 :(得分:2)

如果你的两个表都有一个同名的列,那么你只能访问一个关联数组中的一个字段 - 键是字段的名称,所以第一个是被第二次覆盖。

正如您所说,快速修复是显式重命名字段,以便它们不会发生冲突。虽然您可以使用mysql_fetch_array来解决它 - 这将为您提供所有字段,但您需要按索引号访问字段;因此,如果更改表结构,则需要重新编写代码。

更好的方法是不要在不同的表中使用两个具有相同名称的字段,如果可能的话 - 如果它们被称为reservationIDuserID,则完全避免这种情况。我尽量不重复使用字段名,除非它是外键。