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

执行UPDATE与SELECT后邮件无法获取查询变量的问题求助

问题解决:邮件正文中无法显示数据库查询的变量

你的代码核心问题是执行SELECT预处理语句后,没有获取查询结果并赋值给$row变量,导致$row未定义,$name自然为空,无法在邮件中显示。同时还有一个潜在问题:$token变量未从$_GET中取值,会导致数据库查询失败。

以下是修正后的完整代码:

if (!isset($_GET['token'])) {
    echo "Link is missing";
} else {
    // 先获取URL中的token值
    $token = $_GET['token'];
    
    $stmt = $conn->prepare("UPDATE account SET verified = ? WHERE token = ?");
    $status = 1;
    // 注意:$status是整数,bind_param的类型应该用"is"而非"ss",避免类型转换问题
    $stmt->bind_param("is", $status, $token);
    $res = $stmt->execute();
    if ($res) {
        echo "name updated";
    }
    $stmt->close(); // 关闭预处理语句,释放资源
    
    $stmt1 = $conn->prepare("SELECT * FROM account WHERE token = ?");
    $stmt1->bind_param("s", $token);
    $res1 = $stmt1->execute();
    if ($res1) {
        // 获取查询结果集
        $result = $stmt1->get_result();
        // 取出一行数据到$row数组
        $row = $result->fetch_assoc();
        
        // 现在可以正确获取name字段
        $name = $row["name"];
        
        $fromemail = "post@postmaster.com";
        $fromname = "Postmaster Inc.";
        $subject = "Updating your account";
        $to = "member@postmaster.com";
        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
        $headers .= "From: ".$fromname." <".$fromemail.">\r\n";
        $message = $name; // 现在可以正常显示
        mail($to, $subject, $message, $headers);
        
        // 释放结果集和关闭预处理语句
        $result->close();
        $stmt1->close();
    }
}

关键修正点:

  • 获取$token值:添加$token = $_GET['token'];,确保数据库操作能拿到正确的token参数。
  • 修正bind_param类型:$status是整数类型,bind_param的类型标识符用"is"(i代表整数,s代表字符串),避免不必要的类型转换。
  • 获取查询结果:执行$stmt1->execute()后,必须调用get_result()获取结果集,再用fetch_assoc()将查询结果赋值给$row,这样才能从$row中取出name字段的值。
  • 释放资源:添加close()方法关闭预处理语句和结果集,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Michaël Thönnissen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:16:16