[英]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
是一个数组数组(行),因此您不能仅仅使其内爆。 您需要从每一行获取第一个值并将其内爆。
使用array_column()
:
$category_ids = implode(', ', array_column($category_ids, 0));
echo $category_ids;
输出:
5、8、4、2
用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));
$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];
$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.