0

我希望能够编辑两个表中的信息,但我不断收到 fname ambiguous 错误消息?

$query = "UPDATE `test2`, `test3`  SET `fname`='$name', `stdate`='$stdate',`endate`='$endate',`addr1`='$addr1',`addr2`='$addr2',`city`='$city',`state`='$state',`zip`='$zip',`description`='$desc',`name`='$fileName',`size`='$fileSize',`type`='$fileType',`content`=' ',`link`='$link',`user`='$user' WHERE `id`='$id'";
}}}
else {   
$query = "UPDATE `test2`, `test3` SET `fname`='$name', `stdate`='$stdate',`endate`='$endate',`addr1`='$addr1',`addr2`='$addr2',`city`='$city',`state`='$state',`zip`='$zip',`description`='$desc',`name`=' ',`size`='0',`type`=' ',`content`=' ',`link`='$link',`user`='$user' WHERE `id`='$id'";
}
4

2 回答 2

0

要解决这个问题,您可以使用表别名或在给定表的每个字段前加上其表名和一个点(如@Dagon 所述):

table_name.field_name
于 2013-08-11T22:59:45.360 回答
0

使用表名或表别名限定所有列名。例如

UPDATE `test2` t2
 CROSS
  JOIN `test3` t3
   SET t2.fname = ... 
     , t3.stdate = ...
 WHERE t2.id = ...  

(我包括了 CROSS 键,因为我在您的语句中看不到任何连接谓词。也许该引用id是为了引用 t2.id 和 t3.id,或者有一个外键?

UPDATE `test2` t2
  JOIN `test3` t3
    ON t2.id = t3.t2_id 
   SET t2.fname = ... 
     , t3.stdate = ...
 WHERE t2.id = ...  
于 2013-08-11T23:00:22.747 回答