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

MVC架构下调用模型返回空数组,print_r($donnees)输出Array()排查

问题排查:查询返回空数组的原因及解决办法

以下是导致print_r($donnees)输出Array()的常见原因及对应解决方案:

  • 模型方法未接收参数
    你的authModele的authenticate方法没有声明接收$login和$mdp参数,导致SQL中的占位符无法被正确赋值,自然查询不到数据。修改模型代码,为方法添加参数:

    public function authenticate($login, $mdp) {
        $db = db_connect(); 
        
        $sql = 'SELECT * FROM Visiteur WHERE login = ? AND mdp = ?';
    
        $resultat = $db->query($sql, [$login, $mdp]);
    
        $resultat = $resultat->getResult();
    
        return $resultat;
    }
    
  • 数据库密码与传入值不匹配
    检查Visiteur表的mdp字段存储形式:

    • 如果是加密存储(如BCrypt、MD5),直接传入明文oppg5会匹配失败。此时应先根据登录名查询用户信息,再用对应加密算法验证密码:
      public function authenticate($login, $mdp) {
          $db = db_connect(); 
          $sql = 'SELECT * FROM Visiteur WHERE login = ?';
          $user = $db->query($sql, [$login])->getRow();
          
          if ($user && password_verify($mdp, $user->mdp)) {
              return [$user]; // 保持返回数组格式
          }
          return [];
      }
      
  • 表名/字段名拼写或大小写问题
    确认数据库中的表名、字段名与SQL中的写法完全一致:

    • 部分数据库(如Linux环境下的MySQL)区分表名大小写,若实际表名为visiteur全小写,SQL中写Visiteur会查询失败。
    • 检查字段名是否拼写正确,比如是否应为password而非mdp。
  • SQL执行错误排查
    可在模型中添加错误捕获,直接查看数据库返回的错误信息:

    $resultat = $db->query($sql, [$login, $mdp]);
    if ($db->error()) {
        print_r($db->error()); // 输出错误详情,定位SQL问题
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:50:56