我已经搜索了这个,但是找不到解决这个问题的方法。
$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)
答案 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)";