
PHP报错“Undefined variable: Body”是因为在使用$Body .= ...前未声明该变量,需先初始化为空字符串,再进行字符串拼接。
php报错“undefined variable: body”是因为在使用`$body .= ...`前未声明该变量,需先初始化为空字符串,再进行字符串拼接。
在PHP中,`$Body .= "xxx"` 是**字符串连接赋值操作符**,它等价于 `$Body = $Body . "xxx"`。这意味着PHP会先尝试读取 `$Body` 的当前值,再将其与右侧字符串拼接。如果 `$Body` 从未被定义(即未初始化),PHP就会触发 `Notice: Undefined variable: Body` 警告——这正是你在 `email.php` 第48行遇到的问题。✅ 正确做法是:在首次使用 $Body 前显式初始化它,通常赋值为空字符串:
// 准备邮件正文内容 $Body = ''; // 关键:必须先声明并初始化为空字符串 $Body .= "Name: " . $name . "\n"; $Body .= "Phone: " . $phone . "\n"; $Body .= "Email: " . $email . "\n"; $Body .= "Message: " . $message . "\n";
? 小技巧:你也可以用更简洁、可读性更强的方式重构这段逻辑,例如使用 heredoc 语法 或 数组 + implode(),避免重复 .= 操作:
// 方式2:使用数组收集字段,最后合并(推荐,更易维护)
$fields = [
"Name: $name",
"Phone: $phone",
"Email: $email",
"Message: $message"
];
$Body = implode("\n", $fields) . "\n";⚠️ 注意事项:
- 不要仅依赖
error_reporting(E_ALL & ~E_NOTICE)来屏蔽该警告——掩盖问题不如修复问题; - 确保所有通过
$_POST获取的变量都经过isset()或空值校验(如$_POST['body'] ?? ''),避免因表单字段缺失引发新错误; - 原代码中
$Body变量名首字母大写($Body)虽合法,但不符合PHP命名惯例(建议统一用小驼峰$body),同时注意大小写敏感性($Body≠$body); -
Trim()函数应为trim()(PHP内置函数全小写),原代码中的大写Trim可能导致致命错误(除非自定义了该函数)。
总结:只要在拼接前执行 $Body = '';,即可彻底解决该Notice。这是PHP变量作用域与赋值机制的基础实践,也是编写健壮表单处理脚本的第一步。
立即学习“PHP免费学习笔记(深入)”;



















