首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告: mysql_result() [function.mysql- result ]:无法跳到中MySQL结果索引2的第0行

警告: mysql_result() [function.mysql- result ]:无法跳到中MySQL结果索引2的第0行
EN

Stack Overflow用户
提问于 2012-10-30 16:23:53
回答 4查看 2.8K关注 0票数 1

我正在尝试使它,以便我可以限制“工作人员面板”的用户与那里的"member_level“在"3”,以便其他人被重定向到account_page.php,但我目前收到一个错误,这只是突然出现在1小时前,这是从哪里冒出来的,我没有改变任何东西,它只是出现了。

这是人员面板的代码:

代码语言:javascript
复制
<?php
    ob_start();
mysql_connect('localhost', 'u1908470_cms', 'BeingX1309X')or die("Error: ".mysqlerror());
mysql_select_db('u1908470_cms'); 

$query1 = mysql_query("SELECT 'member_level' FROM `users` WHERE `username` = '" . mysql_real_escape_string ($_SESSION['user']['username'])."'");
$query2 = mysql_result($query1,0,'member_level') or die(mysql_error());

switch ($query2)
{
case 3: 
  {
  echo "<p>Now Logged into Staff Panel!</p>";

  }
  break;

case 2:
  {
  header("location: http://www.cookiedenied.com/account_page.php"); 
  }
  break;

case 1:
  {
  header("location: http://www.cookiedenied.com/account_page.php"); 
  }
  break;

}
?>
EN

回答 4

Stack Overflow用户

发布于 2012-10-30 16:40:22

正确转义字段和表名

而不是

代码语言:javascript
复制
    SELECT 'member_level', ....

...please使用...

代码语言:javascript
复制
    SELECT `member_level`, ....

验证您的查询。

像这样重写你的代码:

代码语言:javascript
复制
$SQL = "SELECT `member_level`
    FROM `users` 
    WHERE `username` = '" 
    . mysql_real_escape_string($_SESSION['user']['username'])
    . "'";

$MyQ = mysql_query($SQL);
$MyR = mysql_result($MyQ,0,'member_level') or die(mysql_error());

...and var_dump($SQL);查看您的语句是否有效。在使用另一个MySQL工具(工作台、phpMyAdmin、SQLyog或其他工具)执行它时检查它,看看它是否会生成任何结果。也许$_SESSION变量没有正确设置,或者类似的东西,你可以通过这种方式来发现。

请使用MySQLi或PDO。

从手册中:

不鼓励使用mysql扩展。相反,应该使用MySQLi或PDO_MySQL扩展。

重新格式化您的 switch**-Block.**

与你的问题无关,但是你的switch-Block看起来太复杂了,想要获得一些更容易的东西。试试这个:

代码语言:javascript
复制
switch ($query2) {
    case 3: 
        echo "<p>Now Logged into Staff Panel!</p>";
        break;
    default:
        header("location: http://www.cookiedenied.com/account_page.php"); 
}
票数 1
EN

Stack Overflow用户

发布于 2012-10-30 16:30:41

试试这个:

代码语言:javascript
复制
$R = mysql_fetch_assoc($query1);
$query2 = $R["member_level"]

但是您可能应该检查您的查询是否至少返回1行。

票数 0
EN

Stack Overflow用户

发布于 2012-10-30 16:30:50

首先,尽量避免使用mysql_query。这已经过时了,并成为使用PDO的习惯。

在您的查询中,您用引号将表名引起来。删除引号并尝试。

更改代码。并替换为以下代码。

代码语言:javascript
复制
<?php
ob_start();
try {

      $pdo = new PDO('mysql:host=localhost;dbname=u1908470_cms', 'u1908470_cms','BeingX1309X');

} catch (PDOException $e) {

      print "Error!: " . $e->getMessage() . "<br/>";
      die();

}

$username = $_SESSION['user']['username'];
$statement = $pdo->prepare("select `member_level` from `users` where username = :username");
$statement->execute(array(':username' => $username));
$row = $statement->fetch();

$member_level = $row['member_level'];
switch ($member_level)
{
    case 3: {
        echo "<p>Now Logged into Staff Panel!</p>";
        break;
    }
    default:{

        header("location: http://www.cookiedenied.com/account_page.php"); 
        break;
    }
}

实际上,您可以删除switch语句,只添加if-else条件。

代码语言:javascript
复制
if($member_level == 3) {

  echo "<p>Now Logged into Staff Panel!</p>";

}else{

  header("location: http://www.cookiedenied.com/account_page.php"); 

}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13135129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档