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

2018-12-07 16:30:34 +08:00
 happylty
现在用 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

请大神赐教。
3242 次点击
所在节点    PHP
13 条回复
breadenglish
2018-12-07 16:48:05 +08:00
GROUP_CONCAT
DavidNineRoc
2018-12-07 16:48:41 +08:00
直接上图,如果不用框架,自己装一个 collection 包
![]( )
![]( )
markgor
2018-12-07 17:25:10 +08:00
SELECT CONCAT('亲爱的',`name`,'你的课程有',GROUP_CONCAT(`class`),',','老师是',GROUP_CONCAT(`teacher`)) as msg FROM tbl WHERE `name` = 'lee' GROUP BY `name`;
happylty
2018-12-07 17:34:42 +08:00
@breadenglish #1
@DavidNineRoc #2
还有个障碍就是,如果有网址该怎么办?
happylty
2018-12-07 17:55:23 +08:00
@markgor #3 你这个怎么把字符串也给选中了?数据库里没这些玩意儿啊
hahastudio
2018-12-07 18:05:34 +08:00
如果是实际项目的话,我觉得应该是:
亲爱的 %name%,你当前已参加如下课程:

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

除非你的那边是,如果选了 2 门课程,会是这 2 门课程的老师联合授课,不然用户怎么知道哪个课是哪个老师
happylty
2018-12-07 18:08:36 +08:00
@hahastudio #6 不是工作项目,我这是学习的过程中出现的问题,相当于毕设前的小作品吧
happylty
2018-12-07 18:22:49 +08:00
@markgor #3 还有个问题就是
老师介绍地址<a herf="www.qq.com/?',GROUP_CONCAT(`teacher`),'/></a>')
这样就变成 http://www.qq.com/?gebilaowang,gebilaozhang/ 了。。。
这个怎么处理?
jininij
2018-12-07 18:51:25 +08:00
不要使用 group_concat。被坑过,折腾了很久。
如果合并的项太多,输出的字符串会被截断,不会有任何错误。
本来是个非常棒的函数,可以减少很多次查询,不知道为什么要有这个奇怪的设定。
happylty
2018-12-07 18:54:19 +08:00
@jininij #9 那我用什么?。。。我不懂啊所以来问的,你把我唯一的希望给掐灭了。。。
markgor
2018-12-24 18:21:01 +08:00
@happylty 我看你一开始没这个需求,所以才给这句你,直接一句出结果,如果你还要加这些进去,那直接查询数据库后用 PHP 组合下就可以了,没什么困难吧....
happylty
2018-12-24 18:25:16 +08:00
@markgor #11 已经解决了,谢谢。
markgor
2018-12-24 18:28:57 +08:00
@jininij 那是 mysql.cnf 里面设置的,默认好像 1000 字符截断,你可以通过修改 cnf 文件,或者通过 set session 的方式来改变这个参数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/515407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX