簡體   English   中英

如何從Mysql中選擇逗號分隔變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM