这个if语句不起作用 - 我做错了什么?

时间:2011-11-02 00:15:18

标签: php if-statement

我正在尝试检索当前登录用户的访问级别(admin / member / guest),并根据此情况在我的页面上显示特定内容。我正试图用echos现在测试这个,但仍然无法打印出任何东西。有人可以提出任何建议吗?

if(isset($_SESSION['username'])){

    global $con;
    $q = "SELECT access FROM users WHERE username = '$username' ";
    $result = mysql_query($q, $con);

    if($result == 'guest')
    {
        echo "You are a guest";// SHOW GUEST CONTENT
    }
    elseif($result == 'member')
    {
       echo "You are a member"; // SHOW OTHER CONTENT
    }
    elseif($result == 'admin')
    {
        echo "You are an admin";// SHOW ADMIN CONTENT
    }

}

3 个答案:

答案 0 :(得分:2)

$result是一个mysql资源。你需要

if(isset($_SESSION['username'])){

    global $con;
    $q = "SELECT access FROM users WHERE username = '$username' LIMIT 1";
    $result = mysql_query($q, $con);
    $row = mysql_fetch_assoc($result);

    $access = $row['access'];

    if($access == 'guest')
    {
        echo "You are a guest";// SHOW GUEST CONTENT
    }
    elseif($access == 'member')
    {
       echo "You are a member"; // SHOW OTHER CONTENT
    }
    elseif($access == 'admin')
    {
        echo "You are an admin";// SHOW ADMIN CONTENT
    }

}

答案 1 :(得分:1)

mysql_query返回的

$result 您可以比较的字符串;它是resource。您需要从$result获取行:

$row = mysql_fetch_assoc($result)
$access = $row['access'];

if($access == 'guest') {
   ...
}

...

其他一些问题:

  • 您的查询中可能存在SQL注入问题。您永远不应该直接将变量值插入到SQL查询中,而不必先将它们正确地转义。您可能希望使用mysql_real_escape_string
  • {@ 3}}已被弃用。您应该尝试使用mysql(MySQL改进版)或mysqli(PHP数据对象)。

答案 2 :(得分:0)

我看到两个问题: 1.你需要使用session_start();在开始。否则你的if语句将不会被执行。 2. mysql_query($ q,$ con)不返回字符串。它返回一个记录集。你需要使用mysql_fetch_assoc($ result);返回关联数组。从数组中,您可以通过以下方式检索所需的值:
$ assoc_arr = mysql_fetch_assoc($ result); $ access = $ assoc_arr ['access'];

现在您可以比较$ access。