而在SQL查询中循环

时间:2012-06-27 08:25:17

标签: php mysql sql while-loop

我不确定为什么这个SQL查询无效。

我是SQL / PHP的新手,所以请原谅。

mysql_query("
    SELECT * FROM table WHERE name = " . "'Bob'" . 
    while($i < $size)
    {
        $i++; 
        echo "OR name = '"; 
        echo $array[$i] . "'";
    } . 
    " ORDER BY id DESC "
);

Dreamweaver给我一个错误,说它不正确,但没告诉我出了什么问题。

是否可以将while循环放入sql命令?

4 个答案:

答案 0 :(得分:2)

你不能在字符串中使用一段时间

$where = "";
if ($size > 0) 
{
$where .= " WHERE ";
}
while($i < $size)
{
$i++;
$where .= "OR name = '".$array[$i]."' ";
}

$query = "SELECT * FROM table WHERE name = '".Bob."'".$where." ORDER BY id DESC";
mysql_query($query);

(此代码未经过测试)

答案 1 :(得分:2)

Woot!

你不能这样写:D

在编写查询之前构建OR条件,这样就可以了:

$myCondition = " ";
while($i < $size) {
    $i++;
    $myCondition .= "OR name = '" . $array[$i] . "'";
}
mysql_query(
    "SELECT * FROM table WHERE name = " . "'Bob'" . $myCondition . " ORDER BY id DESC ");

答案 2 :(得分:0)

echo是输出字符串,它不会返回字符串。

$str = "aaa" . echo "bbb";之类的内容无效。

对于你的情况,使用IN会更好。

foreach ($array as &$name) {
  $name = "'".mysql_real_escape_string($name)."'";
}
mysql_query("SELECT * FROM table WHERE name IN (".implode(',', $array).")");

答案 3 :(得分:0)

或使用

"SELECT * FROM table WHERE name IN(".implode( ',', $array).")";