在MySQL中使用JOIN时避免模糊的列错误

时间:2012-09-19 15:51:04

标签: php mysql join mysqli

我的查询如下:

$sql = "
SELECT u.*, s.*
FROM bands u
inner join statuses s on u.status_id = s.id
WHERE u.status_id = 1
ORDER BY u.band_name";

我想从bands表中输出ID,如下所示:

<?php while($row = $result->fetch_assoc()){ ?>
            <tr>
              <?php
                    echo '<td id="' . $row['id'] . '">This is the band</td>';
              ?>
            </tr>
<?php }

$row['id']没有输出任何内容,我猜是因为某种模糊的列问题,但我不确定如何正确查询它。我也试过$row['u.id'],但我不认为这是正确的别名用法,因为它也没有输出任何内容。

2 个答案:

答案 0 :(得分:4)

您需要为id列创建非冲突别名;

SELECT u.*, s.*, u.id AS uid, s.id AS sid
FROM bands u
inner join statuses s on u.status_id = s.id
WHERE u.status_id = 1
ORDER BY u.band_name

然后,您可以将其选为$row['uid']$row['sid'],并像往常一样访问其他列。冲突的id列仍然存在,只是避免使用它。

答案 1 :(得分:1)

在相同的列名称上添加别名。前,

SELECT u.id UID,....

然后您现在可以使用其别名(例如.UID

进行检索