如何 SELECT 逗号分隔变量 来自 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 查询,并且状态值来自我已指定为数组的多个复选框。

我已经为这个数组使用了内爆函数:

$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>';
        }

问题是我没有得到任何结果。可能是什么问题呢。或者如果有人可以 suggest/Advice 作为替代方案。

当我 echo $mstat; 我得到 Active,Passive,Dormant (这是基于我的复选框选择)

将此行更改为:

$query="SELECT * FROM USER WHERE status IN ('$mstat')";

参数必须在 ()

!!! 每个单词必须在 ' ' 像: $查询="SELECT * FROM USER WHERE status IN ('Active','Inactive')"

你可以这样改:

if ($mstat) $query .= ' ({$db->quote($status}) ';

status 是字符串。你需要用 quotes 包裹它们。 IN 需要 () 来包装字符串值。尝试 -

$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 函数中完成的所有值中添加 ''。