首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉勾
V2EX  ›  PHP

如何将输出变量值设置为多个结果?

  •  
  •   happylty · 108 天前 · 955 次点击
    这是一个创建于 108 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在用 phpmailer 做一个到时间自动发送邮件的程序。有个需求就是在数据库中有 name 会有重复的,但是 class 不会重复但是要在输出结果变量中检测到 name 重复的就在结果变量中有多个 class.

    数据库:
    name class teacher
    lee C1 Gebilaowang
    lee C2 Gebilaozhang

    邮件内容:
    亲爱的 %name%,你的课程有%class%,老师是 %teacher%

    实际体验效果是会发送两封邮件:
    亲爱的 lee,你的课程有 C1,老师是 Gebilaowang
    亲爱的 lee,你的课程有 C2,老师是 Gebilaozhang

    怎么合并为一封邮件:
    亲爱的 lee,你的课程有 C1,C2,老师是 Gebilaowang,Gebilaozhang

    请大神赐教。
    第 1 条附言  ·  108 天前
    还有个问题就是
    邮件会在每个 teacher 上面进行链接到个人页面,例如
    <a href="https://www.qq.com/%url%/">%teacher%</a>
    但是如果用了 GROUP_CONCAT 就会变成
    <a href="https://www.qq.com/laowang,laozhang/">gebilaowang,gebilaozhang</a>
    这就嗝儿屁了
    13 回复  |  直到 2018-12-24 18:28:57 +08:00
        1
    breadenglish   108 天前
    GROUP_CONCAT
        2
    DavidNineRoc   108 天前
    直接上图,如果不用框架,自己装一个 collection 包
    ![]( )
    ![]( )
        3
    markgor   108 天前   ♥ 1
    SELECT CONCAT('亲爱的',`name`,'你的课程有',GROUP_CONCAT(`class`),',','老师是',GROUP_CONCAT(`teacher`)) as msg FROM tbl WHERE `name` = 'lee' GROUP BY `name`;
        4
    happylty   108 天前
    @breadenglish #1
    @DavidNineRoc #2
    还有个障碍就是,如果有网址该怎么办?
        5
    happylty   108 天前
    @markgor #3 你这个怎么把字符串也给选中了?数据库里没这些玩意儿啊
        6
    hahastudio   108 天前
    如果是实际项目的话,我觉得应该是:
    亲爱的 %name%,你当前已参加如下课程:

    |课程|老师|
    |----|----|
    |%class%|%teacher%|

    除非你的那边是,如果选了 2 门课程,会是这 2 门课程的老师联合授课,不然用户怎么知道哪个课是哪个老师
        7
    happylty   108 天前
    @hahastudio #6 不是工作项目,我这是学习的过程中出现的问题,相当于毕设前的小作品吧
        8
    happylty   108 天前
    @markgor #3 还有个问题就是
    老师介绍地址<a herf="www.qq.com/?',GROUP_CONCAT(`teacher`),'/></a>')
    这样就变成 http://www.qq.com/?gebilaowang,gebilaozhang/ 了。。。
    这个怎么处理?
        9
    jininij   108 天前 via iPhone
    不要使用 group_concat。被坑过,折腾了很久。
    如果合并的项太多,输出的字符串会被截断,不会有任何错误。
    本来是个非常棒的函数,可以减少很多次查询,不知道为什么要有这个奇怪的设定。
        10
    happylty   108 天前
    @jininij #9 那我用什么?。。。我不懂啊所以来问的,你把我唯一的希望给掐灭了。。。
        11
    markgor   91 天前   ♥ 1
    @happylty 我看你一开始没这个需求,所以才给这句你,直接一句出结果,如果你还要加这些进去,那直接查询数据库后用 PHP 组合下就可以了,没什么困难吧....
        12
    happylty   91 天前
    @markgor #11 已经解决了,谢谢。
        13
    markgor   91 天前
    @jininij 那是 mysql.cnf 里面设置的,默认好像 1000 字符截断,你可以通过修改 cnf 文件,或者通过 set session 的方式来改变这个参数。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2564 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 00:41 · PVG 08:41 · LAX 17:41 · JFK 20:41
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1