2013-03-24 81 views
0

我想在我的SQL查詢的WHERE位中列出for語句的所有結果($ photosToPromote [$ i])。在WHERE SQL語句中使用PHP FOR循環

目前,for語句輸出結果的文本列表,如果在上一頁中只選擇了一張照片,SQL將拾取1張$ photosToPromote。如果選擇了多張照片,那麼FOR語句將它們全部列出,但是SQL沒有找到它們並顯示圖像。

在將它放入SQL之前,是否需要使用mysql_real_escape_string?我怎樣才能做到這一點?

$photosToPromote = $_POST['promotePhoto']; 
if(empty($photosToPromote)) 
{ 
echo("<p class=\"error\">You didn't select any photos so go back and start again!"); 
} 
else 
{ 
$N = count($photosToPromote); 

echo("You selected $N photos(s): "); 
for($i=0; $i < $N; $i++) 
{ 
    echo($photosToPromote[$i] . " "); 
} 
} 

$queryUserPhotos = mysql_query("SELECT photoID FROM photos WHERE photoid='$photosToPromote[$i]' AND (auth = '5' OR auth = '2' OR auth = '4') ORDER BY auth DESC") or die("Something went wrong...please try this again later!"); 

while($resultUserPhotos = mysql_fetch_array($queryUserPhotos)){ 

<img src=\"/$imgpath/$resultUserPhotos[photoID].jpg\" alt=\"Your Photo\"/> 

} 
+0

注意'mysql_ *'功能被棄用(參見[紅色框](http://php.net/mysql_query))。一般來說,最好使用參數化查詢。 – 2013-03-24 15:23:51

回答

0

你可以試試這個:

$c = ''; 
foreach ($photosToPromote as $p) { 
    $c .= " photoid=$p OR "; 
} 
$c .= '1=2';//false condition to close $c by a condition never true 
$q = "SELECT photoID FROM photos WHERE ($c) AND (auth = '5' OR auth = '2' OR auth = '4') ORDER BY auth DESC"; 
$queryUserPhotos = mysql_query($q) or die("Something went wrong...please try this again later!"); 
+0

剛剛意識到我不需要SQL連接,因爲我只需要photoID。所以我可以從其中循環。 哎呦......謝謝:) – Thomas 2013-03-24 16:22:57