我使用下面的查询从表中获取电子邮件记录。
但它没有从表中获得完整的电子邮件列表。
select group_concat(email) as email from table
$temp=$Db1->fetch_array($sql);
$elist['emails']=$temp[email];
它只带来50 + - 记录,但我在db中有1400多条记录用于电子邮件。
问题: 如何使用group_concat从数据库获取完整的电子邮件,即逗号分隔。
答案 0 :(得分:2)
你做不到。 GROUP_CONCAT()
的最大长度为1024个字符(默认情况下),您正在达到该限制。可以提高这个限制,但不是无限期,所以这不是一个好的解决方案。
但是,您不需要GROUP_CONCAT()
。你想要做的是为每个电子邮件地址取一行,即
SELECT email FROM table
...
while ($row = $db->fetch_array) {
$emails[] = $row["email"];
}
答案 1 :(得分:0)
您必须通过运行以下查询重置默认长度 GROUP_CONCAT 功能,然后运行查询。
系统变量:{{3}}
SET SESSION group_concat_max_len = 10000;
SELECT GROUP_CONCAT(email) AS email FROM TABLE;
您可以全局或会话方式重置其值。根据您的使用情况更新长度。