2012-08-27 32 views
0

我有这个代码似乎不工作,我想要做的是做一个查询来了解用户的级别,然后根据该级别我需要打印不同的内容,就目前它打印默认之一,我收到此错误信息:Php会话,根据用户级别问题重定向

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

也有错字“SELET”在 –

回答

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

谢谢:) 它这样工作.. – Alb

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

您正在使用可选的PARAMS到获取mysql_result中的特定列,但它与您在查询语句中选择的列名不匹配;

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

感谢“SELECT”代替了回答我:) 是的,我已经做这个现在..但似乎问题不在这里,我仍然得到相同的信息错误.. – Alb

+0

@Alb mgraph也发现了错误的'select'语法错误的宝石。是这个问题吗? – Fluffeh

+0

@Alb请参阅编辑。您与选择的列名称和结果列名称不匹配。 – Fluffeh

0

您是否配置了Mysql连接?你应该有这样的事情: $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

2

你有一个语法错误,SELET必须SELECT

mysql_query("SELECT.. 
0

为什么不试试这个:

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

在你的MySQL查询u的检索从表中访问您的表的唯一单一列,并在您的进一步代码在mysql_result()函数中传递第三个参数字段名称作为等级但在您的查询返回结果列n或字段名称等级不会到来。 像这样

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

如果你想获得等级字段的结果,那么无论检索与字段访问等级字段或检索你的表的所有列或mysql_result函数传递第三个参数为“访问”