2016-10-06 2 views
-1

Я хочу прочитать из таблицы MySQL, является ли это администратором. В строке «Статус» есть 1 или 0. Это больше, чем 0, тогда это админ.PHP isUserAdmin function

PHP:

<?php 
    if($db->isUserAdmin() === TRUE) { 
     echo 'Admin'; 
    } else{ 
     echo 'Noadmin'; 
    } 
?> 

MySQLi:

function isUserAdmin() { 

    $stmt = self::$_db->prepare("SELECT Status FROM users WHERE Session=:sid"); 
    $stmt->bindParam(":sid", session_id()); 
    $stmt->execute(); 

    if($stmt->rowCount() < 1) { 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

Так это не работает? Глядя на это, кажется, что у вас есть логика неправильного пути. Это должно быть 'if ($ stmt-> rowCount()> = 1) {' –

+1

Код, который вы используете, это PDO, а не mysqli. Кроме того, в коде есть много логических ошибок. –

ответ

0

Просто просвещать большие люди из Stack Overflow

function isUserAdmin() 
{ 
    $stmt = self::$_db->prepare("SELECT Status FROM users WHERE Session=?"); 
    $stmt->execute([session_id()]); 
    return $stmt->fetchColumn(); // here is what you really need 
} 

if($db->isUserAdmin()) { 
    echo 'Admin'; 
} else{ 
    echo 'Noadmin'; 
} 
0

Вы проверяете количество строк, возвращаемых запросом, а не значение статуса.

Если это администратор или пользователь, и у него есть сеанс, он всегда будет возвращать true, потому что есть запись в таблице users. Если пользователь не существует, он всегда возвращает false.

Вы должны проверить данные, возвращаемые SQL и проверить, если значение Status > 0

Или изменить SQL и добавить туда дополнительный чек, который Status > 0