[英]How to SELECT Comma Separated variable From Mysql
我有一個MySql數據庫結構和值示例如下所示:
sno firstname status
1 John Active
2 Kelly Inactive
3 Harri Passive
4 Kris Dormant
現在我需要從PHP頁面執行Sql查詢,並且狀態值來自多個復選框,我已將其指定為數組。
我已經為這個數組使用了Implode函數:
$status = $_POST['status'];
$mstat= implode (',', $status);
$query="SELECT * FROM USER WHERE status IN '$mstat'";
$result=mysql_query($query);
while ($members = mysql_fetch_assoc($result))
{
$fname= $members['firstname'];
echo $fname;
echo '</br>';
}
問題是我沒有得到任何結果。 可能是什么問題呢。 或者,如果有人可以建議/建議替代方案。
當我echo $mstat;
我得到Active,Passive,Dormant
(這是基於我的復選框選擇)
status
是字符串。 你需要用quotes
包裝它們。 並且IN
needs ()
包裝字符串值。 試試 -
$mstat= "'" . implode ("','", $status) . "'";
$query="SELECT * FROM USER WHERE status IN ($mstat)";
假設$status
包含數據庫中以數組格式顯示的部分或全部值。
這是100%的工作答案
$mstat= implode ("','", $status);
$query="SELECT * FROM USER WHERE status IN ('$mstat')";
IN就像這樣的IN('Active','Passive','Dormat')所以我們必須在implode函數中添加所有值中的''。
將此行更改為:
$query="SELECT * FROM USER WHERE status IN ('$mstat')";
論證必須在()
! 每個單詞必須在''like:$ query =“SELECT * FROM USER WHERE status IN('Active','Inactive')”
你可以改變它:
if ($mstat) $query .= ' ({$db->quote($status}) ';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.