簡體   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