我不确定为什么这个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命令?
答案 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).")";