我的查询中有多个表

$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:

最佳答案

如果两个表都有一个同名列,则只能访问关联数组中的其中一个字段—键是字段的名称,因此第一个字段被第二个字段重写。
正如您所说,快速解决方法是显式地重命名字段,以便它们不会冲突。尽管您可以使用mysql_fetch_array-这将提供所有字段,但您需要按索引号访问字段;因此,如果更改表结构,则需要重新编写代码。
最好的方法是在不同的表中不要有两个名称相同的字段,如果可能的话-如果它们被称为reservationIDuserID,那么您可以完全避免这种情况。我尽量不重复使用字段名,除非它是外键。

关于php - mysql_fetch_assoc无法访问相似列名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11001655/

10-11 07:36
查看更多