下午,
我在这里有一个函数,如果没有用户具有Administrator角色的记录,或者如果他们这样做,则我尝试返回简单值0。命令行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;
}
}
答案 0 :(得分:0)
你有一个分号,你不需要一个分号 - 在第二个内连接之后。摆脱它,然后再试一次。我认为WHERE子句完全被忽略了。
$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";
对不起,我应该注意到了。它可能不会抛出错误,因为PHP甚至不允许您运行多个SQL语句,只是为了防止SQL注入。所以分号后的所有内容都会被忽略。