0

SQL クエリの WHERE ビット内の for ステートメントのすべての結果 ($photosToPromote[$i]) を一覧表示したいと考えています。

現時点では、for ステートメントは結果のテキスト リストを出力し、前のページで写真が 1 つしか選択されていない場合、SQL は $photosToPromote の 1 つを取得します。複数の写真が選択されている場合、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\"/>

}
4

1 に答える 1

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!");
于 2013-03-24T15:17:44.843 に答える