【问题标题】:How to get full emails list from db using group_concat如何使用 group_concat 从 db 获取完整的电子邮件列表
【发布时间】:2015-03-04 18:49:19
【问题描述】:

我正在使用下面的查询从表中获取电子邮件记录。

但它没有从表格中获得完整的电子邮件列表。

select group_concat(email) as email from table
$temp=$Db1->fetch_array($sql);
$elist['emails']=$temp[email];

它只带出 50 多条记录,但我在 db 中有 1400 多条记录用于电子邮件。

问题: 如何使用 group_concat 从数据库获取完整的电子邮件,即逗号分隔。

【问题讨论】:

    标签: php mysql sql select group-concat


    【解决方案1】:

    你不能。 GROUP_CONCAT() 的最大长度为 1024 个字符(默认情况下),您正在达到该限制。可以提高这个限制,但不能无限期地提高,所以这不是一个好的解决方案。

    不过,这里不需要GROUP_CONCAT()。您要做的是为每个电子邮件地址获取一行,

    SELECT email FROM table
    ...
    while ($row = $db->fetch_array) {
        $emails[] = $row["email"];
    }
    

    【讨论】:

    • 同意使用 GROUP_CONCAT() 在这里没有多大意义
    • @duskwuff 我需要用逗号分隔的电子邮件,以便我可以使用它们发送电子邮件。
    • $x=implode(',',$emails);$emails.= ','. $row["email"];
    【解决方案2】:

    您必须通过运行下面的查询来重置 GROUP_CONCAT 函数的默认长度,然后您已经运行了您的查询。

    系统变量:group_concat_max_len

    SET SESSION group_concat_max_len = 10000;
    SELECT GROUP_CONCAT(email) AS email FROM TABLE;
    

    您可以全局或会话方式重置其值。根据您的使用情况更新长度。

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多