PHP PDO返回错误结果

时间:2018-11-02 08:28:03

标签: php mysql pdo

我已经搜索了这个,但是找不到解决这个问题的方法。

    $sql = "select count(*) as rule_count from AdminRules where FunctionName = :fn_name and UserLevel in (select user_type from users where user_id = :usid)";
    $query = $this->db->prepare($sql);
    $parameters = array(':fn_name' => $func_name , ':usid' => $user_id );

    if (!$query->execute($parameters)){
        return False;
    }
     echo '[ PDO DEBUG ]: ' . Helper::debugPDO($sql, $parameters);  exit();
    return  ($query->fetch()->rule_count >= 1)?True:False;

PDO :: DEBUG的结果:

  

[PDO DEBUG]:从AdminRules中选择count(*)作为rule_count,其中   FunctionName ='admin_control'和UserLevel in(从中选择user_type   用户,其中user_id ='2')

查询结果为0:

  

数组([rule_count] => 0)

但是我在phpmyadmin中运行相同的查询(rule_count = 1) screenshot for result in phpmyadmin

2 个答案:

答案 0 :(得分:1)

user_id是唯一的,所以它不是唯一的,实际上我是在愚蠢地观看(在在线服务器上工作的phpmyadmin)并试图运行连接到本地数据库的代码。

答案 1 :(得分:0)

似乎是您的子查询的结果

select user_type 
from users 
where user_id = :usid

不是一行,因此您应该将=更改为IN

  $sql = "select count(*) as rule_count from AdminRules where FunctionName =:fn_name and UserLevel IN (select user_type from users where user_id = :usid)";