在联接表之后从MySql中选择某些行信息


Selecting certain row information from MySql after joining tables

我正在建立一个照片上传网站,为了显示上传图像的人的用户名,我将两个表连接在一起。这是有效的,但它打印数据库中的每个名称,而不仅仅是所选的图像。

使用以下查询调用所选图像。。。

$data = mysql_query("SELECT * FROM photos WHERE id=$imageID");

下面的代码尝试显示用户名,但我需要它只针对$imageID的行。我该怎么做?

<?php
        $query = mysql_query("SELECT username, user_id ".
        "FROM users, photos ".
        "WHERE (users.id = photos.user_id)");
        while($uploader = mysql_fetch_array( $query ))
        {   
        echo $uploader['username']; }
?>

提前谢谢。

<?php
    $query = mysql_query("SELECT username, user_id ".
    "FROM users, photos ".
    "WHERE (users.id = photos.user_id and photos.id = $imageID)");
    while($uploader = mysql_fetch_array( $query ))
    {   
    echo $uploader['username']; }
?>

但这有点不可靠,因为您只是将一个变量直接替换到sql中,它可能会受到注入攻击。其他查询也是如此。

您可能应该考虑使用参数化查询。

您实际上并没有根据有问题的照片的ID来缩小搜索结果。我想你想要一个更像这样的查询:

$data = mysql_query("SELECT u.username, p.user_id FROM users u, photos p WHERE u.id = p.user_id AND p.id = $imageID");