2012-06-27 96 views
0

我不知道爲什麼這個SQL查詢不起作用。雖然在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命令中?

+3

建議,嘗試首先運行你的查詢到sql,讓它工作,然後把它移動到你的代碼 – Boomer

回答

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

使用一段時間(此代碼未測試)

+0

經過一些修改後,感謝堆! –

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).")"); 
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 "); 
+0

好主意!謝謝 –

0

或者使用

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