【问题标题】:MySQLi Query not Returning Results properlyMySQLi 查询未正确返回结果
【发布时间】:2015-03-01 22:18:23
【问题描述】:

我正在尝试将我的网站切换到 MySQLi,并且我正在按照 W3schools MySQLi 指南进行操作。不过,我遇到了障碍。我有一个功能来检查指定用户是否是网站上的管理员。我已将echo 放在各个位置以查找问题所在,并且我发现它很可能看不到用户。 $username 设置为变量 $user。这是整个代码块(connect.php的一部分:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "lark";

$conn = mysqli_connect($servername, $username, $password, $dbname);

if(!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

session_start();
if(!isset($_SESSION["user_login"])) {
    $user = "";
} else {
    $user = $_SESSION["user_login"];
}

//functions
function isAdmin($username) {
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "lark";
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    $sql_get_is_admin = "SELECT * FROM users WHERE username='$username' LIMIT 1";
    $get_is_admin = mysqli_query($conn, $sql_get_is_admin);

    if(mysqli_num_rows($get_is_admin) > 0) {
        echo "num_rows";
        while ($row = mysqli_fetch_assoc($get_is_admin)) {
            $is_admin_bool = $row['admin'];
            echo "while";
            if($is_admin_bool == 0){
                return false;
            } elseif ($is_admin_bool == 1) {
                return true;
            }
        }


    } else {
        echo "not found.";
    }
}
?>

这是我用来测试$user 变量的代码:

<?php 
include("connect.php");
?>
<div class="main">
<h1>Welcome back, <?php echo $user; ?></h1>
foo
<?php
/*if(isAdmin($user) == true) {
    echo   "<div style='display: table-cell;' class='rightcell'>
                <h3 style='color: #000;'>Admin Tools</h3>
                <a href='userlist.php' target='_blank'>Userlist</a>
            </div>";
} else {
} */

echo isAdmin($user);
?>
</div>

我还必须重新连接到数据库,否则我会在网站上收到此错误:

Notice: Undefined variable: conn in C:\xampp\htdocs\lark\connect.php on line 33

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\lark\connect.php on line 33

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\lark\connect.php on line 35 not found.

如果我修复它以确保没有错误,它只会显示“未找到”。

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    $conn 变量未在您的函数中定义,例如:

    function isAdmin($username) {
    global $conn;
    ..................
    
    }
    

    【讨论】:

      【解决方案2】:

      你的函数中没有 $conn,它被注释掉了。

      function isAdmin($username) {
          /*$servername = "localhost";
          $username = "root";
          $password = "";
          $dbname = "lark";
          $conn = mysqli_connect($servername, $username, $password, $dbname);*/
      

      【讨论】:

      • 它被编辑了,所以我知道错误是什么,我的错。我修好了。
      • 而你还是遇到同样的错误,这是解决了,还是有其他错误?其他错误可能是您双重分配 $username。
      • 我没有收到错误,但它显示“未找到”。这意味着它找不到指定的用户。本例中指定的用户应该存在,因为登录的就是那个用户。根据数据库,有一个登录的用户是管理员。
      • 是的,您在函数中设置了两次$username 它是“根”。你用你的 sql 连接覆盖你传入的内容。
      • 大声笑我什至没有注意到。谢谢,这解决了它。我只是希望我不必在函数中连接到数据库,即使我已经做过一次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多