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

PHP中如何正确读取SQL查询返回的o_user_exists字段值

问题原因

  1. 参数传递缺失:你的signIn方法调用select查询时,仅传入了SQL语句,没有把$userName、$password作为绑定参数传给select方法的第二个形参,导致预编译查询没有拿到入参,返回的结果不符合预期。
  2. 数组结构理解错误:select方法里调用fetch_all(MYSQLI_ASSOC)返回的是二维数组,单条查询结果的结构为[ 0 => ['o_user_exists' => 1] ],你直接取第一层数组的o_user_exists索引自然不存在。
  3. 多余的JSON转换操作:select已经直接返回PHP数组,不需要先json_encode再json_decode做多余转换。

修复步骤

1. 修正LoginModel的signIn方法,补全参数传递

class LoginModel extends Database
{
    public function signIn($userName,$password){
        // 把用户名密码按顺序放入数组,作为select方法的第二个参数传入
        return $this->select(
            "select count(*) as o_user_exists from users where usuario = ? and password = ?",
            [$userName, $password]
        );                    
    }
}

2. 修正控制器调用代码,正确读取数组值

$userModel = new LoginModel();            
$actionSignIn = $userModel->signIn($p_userName, $p_password);        
// 增加判空逻辑避免异常
if (!empty($actionSignIn) && isset($actionSignIn[0]['o_user_exists'])) {
    echo $actionSignIn[0]['o_user_exists'];
} else {
    // 无匹配用户时的处理逻辑
    echo 0;
}

补充说明

你最开始写的json_encode($actionSignIn[0],true)返回的是JSON字符串,不是对象,用->访问属性本身就是错误写法,直接读取原生返回的数组即可。


内容的提问来源于stack exchange,提问作者Bruno Sosa Fast Tag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:08