Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u fetch\u assoc无法访问类似的列名称_Php_Mysql - Fatal编程技术网

Php mysql\u fetch\u assoc无法访问类似的列名称

Php mysql\u fetch\u assoc无法访问类似的列名称,php,mysql,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(选择s.id作为sid

我的查询中有多个表

$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(选择s.id作为sid…
),但有没有更简单的方法?
对于e.x:

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

正如您所说,快速修复方法是显式重命名字段,这样它们就不会发生冲突。虽然您可以通过使用
mysql\u fetch\u array
解决这个问题,这将为您提供所有字段,但您需要按索引号访问字段;因此,如果更改表结构,则需要重新编写代码


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

请不要对新代码使用
mysql.*
函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习。