将数组内爆为来自 mysql 查询的逗号分隔字符串

Posted

技术标签:

【中文标题】将数组内爆为来自 mysql 查询的逗号分隔字符串【英文标题】:implode an array into a comma separated string from mysql query 【发布时间】:2012-07-20 22:39:45 【问题描述】:

在过去的 1 1/2 天里,我一直在尝试将 16 个行 ID 存储到一个字符串中,并用逗号分隔每个 ID。我得到的数组来自 mysql。我得到的错误是

implode() 函数:传递了无效的参数

$str=array();
$string="";
while($row = mysql_fetch_row($result)) 

    $user_id=$row;
    $str=$user_id;
    foreach($str as $p=>$v)
        comma($v);
    


function comma($v)
    $string= implode(",",$v); echo $string;

【问题讨论】:

请不要再做坏人了,不要将逗号分隔的值存储到唯一的字段中。使用另一个表并将每个值存储到自己的行中。 (如果你的 shema 结构良好,你就会制造出不存在的问题。) implode 将数组作为第二个参数 @oCuS 我不知道他是否试图“将逗号分隔的值存储到一个唯一的字段中”,他只是说他想将它存储到一个字符串中。 @Leon:“我一直在尝试将 16 行 ID 存储到一个字符串中,并用逗号分隔每个 ID”。它对我来说已经足够了。这是一个糟糕的设计。期间。 另外,您不应该使用 mysql_* 函数,因为它们 a) 不安全,并且 b) 已被弃用(参见 red box)。您应该使用带有 PDO 或 MySQLi 的准备好的语句。 【参考方案1】:

试试这样的:

$ids = array(); 
while ($row = mysql_fetch_assoc($result))  

    $ids[] = $row["UserID"]; 
 
echo implode(", ", $ids);

"UserID" 替换为表中id 的列名。

所以:首先构建数组,然后将数组内爆成字符串。

【讨论】:

【参考方案2】:

有我的解决方案:

SELECT GROUP_CONCAT(UserID) as string  FROM Users;

此函数的分隔符默认为“,”。

【讨论】:

【参考方案3】:
$query = 'SELECT id FROM your_table';
$rs = mysql_query($query);

$row = mysql_fetch_array($result);
return implode(',', $row);

结果 1,2,3...

【讨论】:

以上是关于将数组内爆为来自 mysql 查询的逗号分隔字符串的主要内容,如果未能解决你的问题,请参考以下文章

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

用键内爆关联数组的最快方法

如何将字符串向量内爆成字符串(优雅的方式)

将 MySQL 内爆数组中的项目与查询中的 PHP 数组匹配

基本内爆 foreach

数组中的两个逗号分隔列表