簡體   English   中英

該if語句不起作用-我在做什么錯?

[英]This if statement isn't working - what am I doing wrong?

我正在嘗試檢索當前登錄用戶的訪問級別(管理員/成員/來賓),並據此在我的頁面上向他們顯示特定內容。 我現在正在嘗試使用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
    }

}

$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
    }

}

mysql_query返回的$result 不是可以比較的字符串; 它是一種資源 您需要從$result獲取行:

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

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

...

其他一些問題:

  • 您的查詢中可能存在SQL注入問題。 在未先正確轉義變量的情況下,切勿將變量的值直接插入SQL查詢中。 您可能要使用mysql_real_escape_string
  • 不建議使用mysql 您應該嘗試使用mysqli (MySQL改進版)或PDO (PHP數據對象)。

我看到兩個問題:1.您需要使用session_start(); 一開始。 否則,將不會執行您的if語句。 2. mysql_query($ q,$ con)不返回字符串。 它返回一個記錄集。 您需要使用mysql_fetch_assoc($ result); 返回關聯數組,然后通過以下方法從數組中檢索所需的值:
$ assoc_arr = mysql_fetch_assoc($ result); $ access = $ assoc_arr ['access'];

現在您可以比較$ access。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM