繁体   English   中英

如何从数据库中获取逗号分隔的值

[英]How to get comma separated values from database

我有以下mysqli查询,我想让输出到(1,2,3,4)类型格式的数组内爆。

这是查询和asoc数组代码:

$user_categories = mysqli_query($connect, "SELECT sub_cat FROM subscriptions WHERE sub_user_id = '$user_id'");

$category_ids = mysqli_fetch_all($user_categories,MYSQLI_NUM);

print_r($category_ids);

$category_ids = implode(", ",$category_ids);

然后,我得到以下输出,但似乎无法隔离这些值...

Array ( 
[0] => Array ( [0] => 5 ) 
[1] => Array ( [0] => 8 ) 
[2] => Array ( [0] => 4 ) 
[3] => Array ( [0] => 2 ) 
)

抱歉,如果我在这里确实遗漏了一些明显的内容。 我一直在尝试修复此问题,由于缺乏PHP经验,我不确定100%确定要搜索的内容。

我还尝试使用$user_categories查询的结果进行一次简单的内爆,按照我在该主题上看到的其他StackExchange答案的说明进行操作,但一无所获(以下代码):

$user_categories = mysqli_query($connect, "SELECT sub_cat FROM subscriptions WHERE sub_user_id = '$user_id'");

$category_ids = implode(", ",$user_categories);

echo $category_ids;

$category_ids是一个数组数组(行),因此您不能仅仅使其内爆。 您需要从每一行获取第一个值并将其内爆。

PHP 5.5+解决方案:

使用array_column()

$category_ids = implode(', ', array_column($category_ids, 0));

echo $category_ids;

输出:

5、8、4、2

PHP 5.3+解决方案:

array_map()代替array_column()

$category_ids = implode(', ', array_map(function ($row) { return $row[0]; }, $category_ids));

echo $category_ids;

输出:

5、8、4、2

mysqli_fetch_all获得的$category_ids是数组数组,仅通过将其传递给爆破就无法检索到所需的结果。 但是,这应该可以完成以下工作:

$category_ids = mysqli_fetch_all($user_categories,MYSQLI_NUM);

$category_ids_imploded = implode(', ', array_map(function ($entry) {
  return $entry['0'];
}, $category_ids));

另外,如果您使用的是PHP 5.5或更高版本,则可以使用array_column使其杂乱array_column

$category_ids_imploded = implode(', ', array_column($category_ids, 0));

MySQL解决方案

$sql = "SELECT group_concat(sub_cat) FROM subscriptions WHERE sub_user_id = '$user_id'"
$result = mysqli_query($connect, $sql);
$category_ids = mysqli_fetch_row($user_categories)[0];

PDO解决方案(首选)

$sql = "SELECT group_concat(sub_cat) FROM subscriptions WHERE sub_user_id = ?"
$stmt = $connect->prepare($sql);
$stmt->execute([$user_id]);
$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
$category_ids = implode(",", $array);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM