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

基于MVC架构的PHP无法通过邮箱从MySQL获取用户自增ID

问题修复方案

核心问题1:SQL预处理语句语法错误

PDO预编译的占位符不需要额外加单引号包裹,你写的':lemail'会被识别为普通字符串而非动态参数,导致查询永远匹配不到数据。

核心问题2:传参错误

你需要传入邮箱参数查询ID,但前端调用getIDUser时传入的是$_SESSION['nomUser'](用户名),不是用户的邮箱值,需要替换为session中存储的用户邮箱对应的字段。

核心问题3:返回值处理不合理

fetchAll()会返回二维数组,针对单条ID查询使用fetch(PDO::FETCH_COLUMN)可以直接返回ID的标量值,不需要额外解析数组。


修复后的代码

  1. APIManager.php 修改:
public function getIDBDUser($lemail){
    // 去掉占位符的单引号
    $req = "SELECT ID_USER FROM user WHERE mail = :lemail";
    $stmt = $this->getBdd()->prepare($req); 
    $stmt->bindParam(':lemail', $lemail, PDO::PARAM_STR);
    $stmt->execute();
    // 直接取第一列的值也就是ID
    $id = $stmt->fetch(PDO::FETCH_COLUMN);
    var_dump($id);
    return $id;
}
  1. page.php 修改:
if (isset($_POST['deleteUser'])) {
    // 替换为你session中存储用户邮箱的字段名,比如$_SESSION['userMail']
    $lid = $apicontrol->getIDUser($_SESSION['userMail']);
    var_dump($lid);
    // $apicontrol->deleteUser($lid);
    // header("Location : index.html");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03