【问题标题】:Admin check Doesn't work管理员检查不起作用
【发布时间】:2017-01-14 13:16:12
【问题描述】:

我不知道大家有什么问题。请帮忙。这里它给出了这样的错误:

mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在第 8 行的 C:\xampp\htdocs\test\session1.php 中给出

<?php
    error_reporting(E_ALL);
    require 'db.php';
    $username = $_SESSION['username'];
    $sql = "SELECT isadmin FROM user WHERE username='$username'"; 

    $result = mysqli_query($con,$sql); 
    $admin = mysqli_fetch_array($result); 

    $_SESSION['admin'] = $admin['admin']; 
    if ($_SESSION['admin'] == 1) { 
        echo "Welcome Admin"; 
    }else{ 
        echo "Normal User"; 
    }
?>

【问题讨论】:

    标签: php session mysqli


    【解决方案1】:

    查看您选择的列:

    SELECT isadmin
           ^^^^^^^
    

    然后您尝试使用/获取admin 列。

    $admin['admin']
            ^^^^^
    

    其中一个不正确,需要匹配,但不清楚哪个列名是正确的,isadminadmin

    最有可能是:

    $admin['isadmin']
    

    看到您发布的错误消息后:(我可能会补充一点,这个答案是在看到它之前发布的)。

    未定义索引:管理员

    并根据您在问题中发布的内容。

    如果admin 列确实(也)存在,那么您需要将其添加到 SELECT 中,但这里似乎并非如此。

    基本上,您的查询失败了,您需要检查查询中的错误。

    【讨论】:

      【解决方案2】:

      之所以如此,是因为您的查询中有一些错误,它返回了false

      尝试检查$username 是否不为空并且查询中引用的列是否正确。

      而且您的查询构建方式不正确,而是应该在查询中传递参数,以使其免受sql injection的影响

      更多信息请参考此链接:parameters in MySQLi

      【讨论】:

      • 该死的人对不起,表名是用户而不是用户我修复了它,但现在出现错误:未定义索引:第 8 行 C:\xampp\htdocs\test\session1.php 中的管理员,我是进行第一次管理员检查
      • @GiorgiMacharashvili 尝试调试 admin 是否已初始化为数组,例如 var_dump($admin);
      • 尝试更改 - $_SESSION['admin'] = $admin['isadmin']; @GiorgiMacharashvili
      【解决方案3】:

      尝试以下管理问题

      $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
      

      如果要使用 ['admin'] 访问数组,则需要定义模式,然后需要告诉 mysqli_fetch_aaray 返回关联数组

      http://php.net/manual/en/mysqli-result.fetch-array.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-06
        • 2012-10-07
        • 2018-10-31
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多