0

我不确定为什么这个 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

4 回答 4

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);

(此代码未经测试)

于 2012-06-27T08:27:18.550 回答
2

呜!

你不能写这个: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 ");
于 2012-06-27T08:28:29.483 回答
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).")");
于 2012-06-27T08:28:05.303 回答
0

或使用

"SELECT * FROM table WHERE name IN(".implode( ',', $array).")";
于 2012-06-27T08:34:19.377 回答