1

我的查询中有多个表

$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 ...)但有没有更简单的方法?例如:

4

1 回答 1

2

如果您的两个表都有同名的列,那么您将只能访问关联数组中的其中一个字段 - 键是字段的名称,因此第一个被覆盖到第二个。

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

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

于 2012-06-12T17:29:21.657 回答