将数组内爆为来自 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 查询的逗号分隔字符串的主要内容,如果未能解决你的问题,请参考以下文章