代码之家  ›  专栏  ›  技术社区  ›  Huskie69

MySQL查询中的动态邮件列表[已关闭]

  •  -1
  • Huskie69  · 技术社区  · 7 年前

    我最近在WoodPress(woocommerce)网站上实施了一个“积分奖励”系统。

    我构建了一个MySQL查询,向我显示每个客户的姓名、电子邮件地址和当前积分余额:

    SELECT  
                b1.meta_value AS first_name, 
                b2.meta_value as last_name, 
                b3.meta_value as points_balance,
                a.user_email,
                p.points_balance
    
    FROM    wp_zaydb6_users a
                    INNER JOIN wp_usermeta b1 ON b1.user_id = a.ID AND b1.meta_key = 'first_name' 
                    INNER JOIN wp_usermeta b2 ON b2.user_id = a.ID AND b2.meta_key = 'last_name'
                    INNER JOIN wp_usermeta b3 ON b3.user_id = a.ID AND b3.meta_key = 'wc_points_balance'
    
    WHERE  b3.meta_value > 0
    

    这会返回如下结果:

    John    Smith   511 j.smith@gmail.com
    Michael Barrymore   71  MICHAEL@BARRYMORE.COM.AU
    Bob Monkhouse   326 Bob.monkhouse@bobmonk.at
    Jane    Doe 176 Jane.Doe@janedoe.ch
    Ricky   Martin  511 r.martin@gmail.com
    

    我的下一步是构造一个脚本(bash,但最好是PHP),它将循环遍历每个记录,提取每个“名字”,打印积分余额,并通过电子邮件发送给相关用户。这一切都需要包装成HTML格式的电子邮件,而不是纯文本。

    我还没有建立动态邮件列表,所以这对我来说都是新鲜事。

    前进的最佳方式是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   thefolenangel    7 年前

    我有一个旧的系统,必须做这样的事情,我用一种非常快但很有黑客感的方式来做。

    $row_message = fetch_html_template('renew_error'); //returns the html template text, that has special markings like [name], [username].
    $row_message['text'] = str_replace('[name]', $variableThatHasUsersName, $row_message['text']);
    

    这是一种非常肮脏且快速的修复方法。如果你想扩展它,你可以使用str_replace多次替换任意多的变量。

    如果这对你有帮助,请接受答案。

    推荐文章