从MySQL查询中将数组合并为逗号分隔的字符串

11

在过去的1天半里,我一直在尝试将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;
}

3
请不要再做坏事,不要将逗号分隔的值存储到唯一字段中。请使用另一个表,并将每个值存储在其自己的行中。(如果您的架构良好结构化,就不会出现这种问题。) - OcuS
implode函数的第二个参数需要传入一个数组。 - Leon
@oCuS 我不知道他是否想要“将逗号分隔的值存储到唯一字段中”,他只是说他想要将其存储到一个字符串中。 - Leon
@Leon:“我一直在尝试将16个行ID存储到一个字符串中,并用逗号分隔每个ID”。对我来说,这已经足够了。那是一个糟糕的设计。结束。 - OcuS
2
此外,您不应该使用 mysql_* 函数,因为它们既不安全,也被弃用(请参见红框)。相反,您应该使用 PDOMySQLi 中的预处理语句。 - Ricardo Altamirano
3个回答

17

可以尝试这样做:

$ids = array(); 
while ($row = mysql_fetch_assoc($result))  
{
    $ids[] = $row["UserID"]; 
} 
echo implode(", ", $ids);

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

因此:首先构建数组,然后将数组合并为字符串。


3
这是我的解决方案:
SELECT GROUP_CONCAT(UserID) as string  FROM Users;

默认情况下,该函数的分隔符为','。

0
$query = 'SELECT id FROM your_table';
$rs = mysql_query($query);

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

结果为1、2、3...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接