如何使用PDO从SET类型列返回多个值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PDO从SET类型列返回多个值?相关的知识,希望对你有一定的参考价值。
我现在发现SET
与ENUM
不同,因为它允许您从列表中插入多个值。
所以我尝试从set列返回数据。首先,我创建表“Test_SET_vs_ENUM”,而不是“ColumnSET”('A','B','C','D')列,之后我插入第一行A,B,C
所以我尝试以不同的方式返回数据:
//First try
$sql=$conn->query("SELECT ColumnSET FROM Test_SET_vs_ENUM WHERE IDRow=1");
$result=$sql->fetch();
$conn->exec($sql);
foreach ($result as $content){
echo "Content: ".$content['ColumnSET']."<br/>";
}
输出是:
内容:A
内容:,
所以我发现SET列以FirstValue,SecondValue,3Value等形式存储数据。所以当我获取结果时,逗号将“结束”数组,我将在输出中只有第一个Value和他的逗号。我的第二次尝试证实了这一点:
//Second try
$sql=$conn->query("SELECT ColumnSET FROM Test_SET_vs_ENUM WHERE IDRow=1");
$result=$sql->fetchAll();
$conn->exec($sql);
foreach ($result as $content){
echo "Content: ".$content['ColumnSET']."<br/>";
}
这次输出是:
内容:A,B,C
但我的目标是输出每个不同的值,所以我尝试了这个:
//Third try
$sql=$conn->query("SELECT ColumnSET FROM Test_SET_vs_ENUM WHERE IDRow=1");
foreach ($sql as $content){
echo "Content: ".$content['ColumnSET']."<br/>";
}
$conn->exec($sql);
输出等于第二次尝试。
所以我问你:如何获取SET列的值并分别控制它们中的每一个?
答案
获得逗号分隔值后,您需要explode()它。
然后使用foreach()迭代这个爆炸的数组并单独显示它们。
如下所示: -
foreach ($result as $content){
$contents_ids = explode(',',$content['ColumnSET']);
foreach($contents_ids as $contents_id){
echo "Content: $contents_id<br/>";
}
}
以上是关于如何使用PDO从SET类型列返回多个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 FragmentPagerAdapter 返回多个片段