来自php / mysql查询的值不正确

时间:2013-09-28 14:12:04

标签: php mysql function

下午,

我在这里有一个函数,如果没有用户具有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;
}

}

1 个答案:

答案 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注入。所以分号后的所有内容都会被忽略。