0

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

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

6 回答 6

2

您有语法错误,SELET必须是SELECT

mysql_query("SELECT..
于 2012-08-27T12:06:10.477 回答
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');
于 2012-08-27T12:04:17.613 回答
0

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

于 2012-08-27T12:05:59.580 回答
0

为什么不试试这个:

$username = mysql_real_escape_string($_SESSION['username']);
$rank1 = mysql_query("SELECT access FROM tbl_galleries WHERE username = '$username'");
于 2012-08-27T12:13:44.873 回答
0

在您的 mysql 查询中,您正在从表中检索唯一名为 access 的单列,并且在 mysql_result() 函数中的进一步代码中,您将第三个参数字段名称作为排名传递,但在查询返回的结果中,列或字段名称排名不是来了。像这样

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

如果你想获得排名字段的结果,那么要么检索具有字段访问权限的排名字段,要么检索表的所有列,或者将 mysql_result 函数中的第三个参数作为“访问”传递

于 2012-08-27T12:34:05.133 回答
0

对于 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');
于 2012-08-27T12:54:08.650 回答