连接表后从MySql中选择某些行信息

时间:2012-03-28 00:09:50

标签: php mysql

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

使用以下查询...

调用所选图像
$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']; }
?>

提前致谢。

2 个答案:

答案 0 :(得分:1)

您实际上并未根据相关照片的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");

答案 1 :(得分:1)

<?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中,它可能受到注入攻击。您的其他查询也是如此。

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