繁体   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