如何使用PDO从SET类型列返回多个值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PDO从SET类型列返回多个值?相关的知识,希望对你有一定的参考价值。

我现在发现SETENUM不同,因为它允许您从列表中插入多个值。

所以我尝试从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类型列返回多个值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Postgres 中将一个类型拆分为多个列?

如何从 FragmentPagerAdapter 返回多个片段

如何从 MySQL 返回整数和数字列作为 PHP 中的整数和数字?

如何使用LINQ返回多个自选字段

替换从 VAST 代码返回的多个 HLS VOD 片段

从 JSON 中的多个返回中随机选择一个值