Afternoon,Неверное значение из PHP/MySQL запрос
У меня есть функция здесь, где я пытаюсь вернуть простое значение 0, если нет записи, где пользователь имеет роль администратора или 1, если они делают , Командная строка SQL работает абсолютно нормально, однако при ее запуске через страницу она всегда возвращает значение 4, что является числом записей в таблице.
Полностью смущен, глядя на него так долго, любые идеи? Как я уже сказал, запрос при запуске непосредственно в mysql возвращает правильное значение, поэтому я не уверен, почему он возвращает 4 каждый раз.
Заранее спасибо.
function userHasRole($role)
{
include '../includes/db-connect.inc.php';
echo $_SESSION['username'];
try
{
$sql = "SELECT count(*) FROM users
INNER JOIN userrole ON users.id = userid
INNER JOIN role ON roleid = role.id;
WHERE username = :username AND role.id = :roleId";
$s = $PDO->prepare($sql);
$s->bindValue(':username', $_SESSION['username']);
$s->bindValue(':roleId', $role);
$s->execute();
}
catch (PDOException $e)
{
$error = 'Error searching for author roles.';
echo $error;
exit();
}
$row = $s->fetch();
if ($row[0] > 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
У вас есть ошибки? Вы называете функцию? Я не вижу никакого вызова функции. – bish
К сожалению, должен был добавить, что я использую if (! UserHasRole ('Administrator')) ... на другой странице, и все работает отлично, я имею в виду, если я изменил if ($ row [0] == 1), тогда он блокирует меня, поскольку он, конечно, продолжает возвращаться 4, так что все работает, как и должно быть, кроме того, чтобы управлять списком неправильного количества пользователей, у которых есть администратор. – Holo
Предложение для отладки: отобразите все строки $ row перед проверкой значения $ row [0]. Предложение для написания SQL: просто скажите «выберите 1 из пользователей ...» вместо count (*). Вы действительно не нуждаетесь в фактическом подсчете, и делать это таким образом должно быть все равно быстрее. Как только вы увидите, что находится в строке $ row, если что-нибудь, это должно сказать вам о проблеме. – MJB