如何在Cron任务邮件中添加客户姓名、金额等数据库字段?
修改邮件内容添加指定字段的实现方法
核心改动步骤:
- 优化SQL查询(推荐):将原
select *改为明确查询所需字段,减少数据传输量,代码更清晰 - 扩展邮件内容拼接逻辑:在循环中加入
customer_name、customer_surname和amount字段,调整显示格式让信息更直观 - 可选:处理空值:对可能为空的字段设置默认显示值,避免邮件内容出现空白
修改后的完整代码
<?php include "../lib/include.php"; $yesterdayDate = date("Y-m-d 09:00:00", strtotime("-1 days")); // 明确指定需要查询的字段,替代select * $query = "select customer_name, customer_surname, amount, pay_url from links where status = 1 and cc_payment_id != '' and payment_date >= '".$yesterdayDate."' and payment_date <= '".date("Y-m-d 08:59:59")."'"; $q = $db->query($query); $mail_content = ""; // 初始化变量,避免未定义的警告 foreach ($q AS $a) { // 处理可能为空的字段,设置默认值 $name = !empty($a["customer_name"]) ? $a["customer_name"] : "未填写"; $surname = !empty($a["customer_surname"]) ? $a["customer_surname"] : "未填写"; $amount = !empty($a["amount"]) ? $a["amount"] : "0.00"; // 拼接包含所有字段的邮件内容 $mail_content .= "客户姓名:{$name} {$surname}<br>"; $mail_content .= "支付金额:{$amount}<br>"; $mail_content .= "支付链接:{$a["pay_url"]} -> Paid<br><br>"; // 加空行分隔每条记录 } if ($mail_content != "") { SendMail($settings["system_email"], $mail_content, "Paid Reservations"); } ?>
关键改动说明
- SQL查询优化:原代码用
select *会查询表中所有字段,改为明确指定需要的字段后,不仅提升查询效率,也能避免后续表结构变更带来的意外问题。 - 字段拼接与格式调整:每条记录单独显示客户姓名、支付金额和支付链接,并用空行分隔,让邮件内容更易读。
- 空值处理:通过三元运算符判断字段是否为空,为空时显示默认值,避免邮件中出现空白内容,提升可读性。
内容的提问来源于stack exchange,提问作者slckv
相关产品推荐
相关产品推荐

