PHP / MySQL INNER JOIN三倍的行数?

时间:2013-12-18 13:34:31

标签: php mysql sql

我有一个系统,我从我的数据库中获取图像,但是当它这样做时,有3倍的相同图像。

我尝试过不同的方式,DISTINCT等,但我不知道如何解决这个问题。

这是我的查询代码:

<?php
$id = $_GET['id'];

$query = "SELECT DISTINCT * FROM billeder INNER JOIN album ON fk_album_ID = $id";

$result = mysqli_query($con, $query);

while($row = mysqli_fetch_assoc($result))
{
    $thumb_src = 'billeder/thumb_'.$row['billeder_sti'];
    $full_src = 'billeder/'.$row['billeder_sti'];

    echo "
            <div class='ikon'>
                <a href='$full_src'>
                    <img src='$thumb_src' alt='' />
                </a>
            </div>
    ";
}

?>

希望有人可以帮我解决这个问题:)

2 个答案:

答案 0 :(得分:1)

如果无法查看您的表格结构,我将无法给出确切的答案,但可能的原因是您的INNER JOIN设置不正确。

SELECT DISTINCT *
FROM billeder
INNER JOIN album
    ON (billeder.fk_album_ID = album.pk_album_ID)
WHERE
    billeder.fk_album_ID = $id

上述内容将是JOIN表格的正确方法,并使用WHERE子句来限制收到的日期。

答案 1 :(得分:0)

JOIN必须与两个表列一起使用。见例:

SELECT * FROM tableA a INNER JOIN tableB b ON a.id = b.a_id;

你想要做的是这样的:

"SELECT DISTINCT * FROM billeder INNER JOIN album ON 
    billeder.fk_album_ID = album.album_id WHERE billeder.id = $id"

您不应将参数传递给JOIN。必须在WHERE子句上使用参数。