如何 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 函数中完成的所有值中添加 ''。
我有一个 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 函数中完成的所有值中添加 ''。