PHP PDO возвращает неправильный результат - PullRequest
0 голосов
/ 02 ноября 2018

Я искал это, но не могу найти способ решить это.

    $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]: выберите count (*) как rule_count из AdminRules, где FunctionName = 'admin_control' и UserLevel in (выберите user_type из пользователи, где user_id = '2')

результат запроса 0:

Array ([rule_count] => 0)

однако я выполняю тот же запрос в phpmyadmin его (rule_count = 1) screenshot for result in phpmyadmin

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

user_id уникален, так что это не так, на самом деле я тупо наблюдал (phpmyadmin, который работает на онлайн-сервере) и пытался запустить мой код, который подключен к локальной базе данных.

0 голосов
/ 02 ноября 2018

Кажется, результат вашего подзапроса

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)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...