Php会话,基于用户级别问题重定向

时间:2012-08-27 12:01:46

标签: php mysql

我有这个代码似乎不起作用,我想做的是进行查询以了解用户的级别,然后基于该级别我需要打印不同的内容,目前它打印默认的一个,我收到此错误消息:

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>";
}

6 个答案:

答案 0 :(得分:2)

您遇到语法错误,SELET必须为SELECT

mysql_query("SELECT..

答案 1 :(得分:0)

您在查询中使用不匹配的引号并使用不正确的语法:

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');

答案 2 :(得分:0)

您是否配置了Mysql连接?你应该有类似的东西: $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

答案 3 :(得分:0)

为什么不试试这个:

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

答案 4 :(得分:0)

在你的mysql查询中,你正在从你的表中检索唯一一个名为access的列,并在你的mysql_result()函数的另一个代码中,你将第三个参数字段名称作为rank传递,但在你的查询中返回结果列或字段名称排名不会到来。 喜欢这个

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

如果你想获得rank字段的结果,那么要么通过字段访问来检索rank字段,要么检索表的所有列,或者将mysql_result函数中的第三个参数作为'access'传递

答案 5 :(得分:0)

  

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他语句返回   resultset,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');