2012-03-28 71 views
0

我正在構建一個照片上傳網站,並且我已經將兩個表連接在一起以顯示上傳圖像的用戶的用戶名。這可以工作,但它會在數據庫中打印每個名稱,而不僅僅是所選圖像。加入表後從MySql中選擇某些行信息

選定的圖像是使用下面的查詢叫...

$data = mysql_query("SELECT * FROM photos WHERE id=$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']; } 
?> 

在此先感謝。

回答

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,它可能會受到注入攻擊。您的其他查詢也一樣。

您應該着手使用參數化查詢。

+0

非常感謝,這工作完美。這個項目只會被大學工作人員使用,我還沒有料到會產生比這更復雜的東西。出於對未來參考的興趣,參數化查詢意味着什麼? – GuerillaRadio 2012-03-28 00:24:09

+1

看看[這個問題/答案](http://stackoverflow.com/a/60496/1248861) – joshuahealy 2012-03-28 00:29:47

+0

沒有教過任何這些東西......太棒了。感謝鏈接@appclay – GuerillaRadio 2012-03-28 00:37:49

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"); 
+0

這是在另一個頁面上完成,工作正常。 $ imageID是我需要添加到查詢某處的變量。 – GuerillaRadio 2012-03-28 00:16:18

+0

沒有關注你,我在查詢中發佈了答案中的圖像標識符。 – Perception 2012-03-28 00:17:33

+0

現在排序,但感謝您的輸入@Perception。 – GuerillaRadio 2012-03-28 00:25:43