簡體   English   中英

Php會話,基於用戶級別問題重定向

[英]Php session, redirect based on user level issue

我有這個代碼似乎不起作用,我想做的是進行查詢以了解用戶的級別,然后基於該級別我需要打印不同的內容,目前它打印默認的一個,我收到此錯誤消息:

mysql_result()期望參數1是資源,在此行給出布爾值:

$rank = mysql_result($rank1, 0, 'rank');

代碼是這樣的:

session_start();
if(!$_SESSION['username']){

header("location:login.php"); // Redirect to login.php page
}
else //Continue to current page
header( 'Content-Type: text/html; charset=utf-8' );
$rank1 = mysql_query("SELET access FROM tbl_galleries WHERE column='username" . mysql_real_escape_string($_SESSION['username']) . "'");
$rank = mysql_result($rank1, 0, 'rank');

switch ($rank)
{
case 3:
  echo "<div><a href='#'>Order DIAMOND Membership</a></div>";
  break;

case 2:
  echo "<div><a href='#'>Order PLATINUM Membership</a></div>
    <div><a href='#'>Order DIAMOND Membership</a></div>";
  break;

case 1:
  echo "<div><a href='#'>Order ELITE Membership</a></div>
    <div><a href='#'>Order PLATINUM Membership</a></div>
    <div><a href='#'>Order DIAMOND Membership</a></div>";
  break;

default:
  echo "<div><a href='#'>Order PRO Membership</a></div>
    <div><a href='#'>Order ELITE Membership</a></div>
    <div><a href='#'>Order PLATINUM Membership</a></div>
    <div><a href='#'>Order DIAMOND Membership</a></div>";
}

你有語法錯誤, SELET必須是SELECT

mysql_query("SELECT..

您在查詢中使用不匹配的引號並使用不正確的語法:

WHERE column='username" 

嘗試使用:

mysql_query("SELECT access FROM tbl_galleries WHERE username ='" . mysql_real_escape_string($_SESSION['username']) . "'");

好的,棘手的語法:

$rank1 = mysql_query("SELECT access FROM tbl_galleries WHERE username" . mysql_real_escape_string($_SESSION['username']) . "'");
$rank = mysql_result($rank1, 0, 'rank');

您正在使用可選參數來獲取mysql_result的特定列,但它與您在查詢語句中選擇的列名稱不匹配;

$rank1 = mysql_query("SELECT access FROM tbl_galleries WHERE username" . mysql_real_escape_string($_SESSION['username']) . "'");
$rank = mysql_result($rank1, 0, 'access');

你是否配置了Mysql連接。 你應該有這樣的東西: $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

為什么不試試這個:

$username = mysql_real_escape_string($_SESSION['username']);
$rank1 = mysql_query("SELECT access FROM tbl_galleries WHERE username = '$username'");

在您的mysql查詢中,您正在從表中檢索唯一一個名為access的列,並且在mysql_result()函數的進一步代碼中,您將第三個參數字段名稱作為rank傳遞,但在查詢返回結果中,列或字段名稱等級不是來了。 像這樣

SELECT access FROM tbl_galleries WHERE username = '$username'
$rank = mysql_result($rank1, 0, 'rank');

如果你想獲得rank字段的結果,那么要么通過字段訪問檢索rank字段,要么檢索表的所有列,或者將mysql_result函數中的第三個參數作為'access'傳遞

對於SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回結果集的語句,mysql_query()在成功時返回資源,如果出錯則返回FALSE。

對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功時返回TRUE,在出錯時返回FALSE。

這意味着您的查詢中存在一些錯誤。 嘗試在phpMyAdmin或其他一些此類工具中完成查詢。 您的查詢應該是這樣的

$userName = mysql_real_escape_string($_SESSION['username']);
$sql = "SELECT access 
        FROM tbl_galleries 
        WHERE username = $userName";
$result = mysql_query($sql);
$rank = mysql_result($result, 0, 'access');

暫無
暫無

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

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