[英]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.