【问题标题】:Use a PHP FOR loop in a WHERE SQL Statement在 WHERE SQL 语句中使用 PHP FOR 循环
【发布时间】:2013-03-24 15:06:31
【问题描述】:

我想在我的 SQL 查询的 WHERE 位中列出 for 语句的所有结果 ($photosToPromote[$i])。

此时,for 语句输出结果的文本列表,如果在前一页上只选择了一张照片,则 SQL 会选择 $photosToPromote 中的 1 张。如果选择了多张照片,则 FOR 语句将它们全部列出,但 SQL 不会找到它们并显示图像。

在将 mysql_real_escape_string 放入 SQL 之前是否需要使用它?我该怎么做呢?

$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\"/>

}

【问题讨论】:

  • 请注意,mysql_* 函数已被弃用(请参阅red box)。一般来说,最好使用参数化查询。

标签: php sql loops for-loop


【解决方案1】:

你可以试试这个:

$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!");

【讨论】:

  • 刚刚意识到我不需要 SQL 连接,因为我只需要 photoID。所以我可以从中循环其余部分。哎呀...谢谢:)
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 2021-08-27
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多