You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Do While循环无输出及PHP语法错误求助:邮件内容追加失败

我来帮你一步步解决这两个问题,先搞定扎眼的语法错误,再排查Do While循环的输出问题:

1. 修复Line 58的语法错误

你遇到的Parse error: unexpected '$message',大概率是字符串与变量拼接时的语法失误。比如你原本想把$messagebody和$hyperlink追加到$message里,但可能漏了PHP中用来拼接字符串的.运算符,或者引号、分号的位置写错了。

举个例子,错误写法可能是这样的:

// 错误:漏了拼接运算符.
$message = $messagebody $hyperlink;
// 或者误用了数字相加的+运算符(PHP里+不能拼接字符串)
$message = $message + $messagebody + $hyperlink;

正确的写法应该用.来拼接,如果是追加内容到已有变量末尾(而不是覆盖),记得用.=运算符:

// 如果是覆盖原有$message内容
$message = $messagebody . $hyperlink;
// 如果是追加到$message的末尾
$message .= $messagebody . $hyperlink;

检查你的Line 58代码,确认拼接时的运算符和标点符号都正确,分号一定要放在语句末尾哦。

2. 修复Do While循环无法输出数据的问题

Do While循环不输出数据,常见原因有这几个,你可以逐一排查:

(1)循环条件或结果集获取逻辑错误

Do While是先执行一次循环体,再判断条件,如果你的循环条件写反了,或者没正确从结果集取数据,就会出问题。比如很多人会写错循环的顺序:

// 错误写法:先进入循环再取数据,第一次循环可能无内容
do {
    // 处理$row
} while ($row = mysqli_fetch_assoc($result));

正确的做法是先获取第一行数据,再进入循环:

// 正确写法:先取第一行数据,再启动Do While
$row = mysqli_fetch_assoc($result);
do {
    // 输出或处理数据,比如:
    echo "患者姓名:" . $row['patient_name'] . ",所在医院:" . $row['hospital'] . "<br>";
    // 如果是追加到邮件内容里
    $message .= "患者姓名:{$row['patient_name']},所在医院:{$row['hospital']}\n";
} while ($row = mysqli_fetch_assoc($result));

(2)SQL查询没返回数据

先确认你的查询语句是否真的能拿到数据。可以在循环前加一行代码,检查结果集的行数:

// 假设$conn是你的数据库连接,$result是查询结果
if (mysqli_num_rows($result) == 0) {
    echo "没有找到匹配的捐赠者数据";
    exit;
}

如果输出这句话,说明问题出在SQL查询上——比如筛选器官/血液捐赠者的条件写错了,或者数据库里本来就没有符合条件的数据。

(3)数据库查询本身出错

如果SQL语句有语法错误,也会导致结果集为空。可以在执行查询后加错误排查代码:

$result = mysqli_query($conn, $sql);
if (!$result) {
    die("查询出错:" . mysqli_error($conn));
}

这样能直接看到SQL的错误信息,方便你修正查询语句。

(4)循环内的输出逻辑有问题

比如你在循环里的echo语句写错了变量名,或者把内容写到了邮件变量里但没打印检查。可以在循环里临时加一行var_dump($row);,看看$row里有没有数据,确认变量名是否和数据库字段一致。

最后建议

先把语法错误修复,再一步步测试循环:

  1. 单独测试SQL查询,确认能拿到预期数据;
  2. 用var_dump($row)检查循环内的变量内容;
  3. 逐步调整循环逻辑,确保数据能正常输出或追加到邮件内容里。

内容的提问来源于stack exchange,提问作者Ismail Issa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:23:44