【问题标题】:Fatal error: Call to a member function query() on null致命错误:在 null 上调用成员函数 query()
【发布时间】:2015-06-23 02:20:34
【问题描述】:

我不确定这里出了什么问题。我只是在网上学习一个教程,然后弹出这些错误。

我收到以下错误

错误

Notice: Undefined variable: db in C:\xampp\htdocs\wisconsindairyfarmers\admin\login.php on line 7

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\wisconsindairyfarmers\admin\login.php on line 7

代码

<?php
$db = new mysqli('127.0.0.1', 'root', '', 'wisconsindairyfarmers');
?>

<?php
require '../db/connect.php';
require '../functions/general.php';

    function user_exists($username){
        //$username = sanitize($username);
        $result = $db->query("SELECT COUNT(UserId) FROM users WHERE UserName = '$username'");
        if($result->num_rows){
        return (mysqli_result($query, 0) == 1) ? true : false;
    }}

if(empty($_POST) === false){

    $username = $_POST['username'];
    $password = $_POST['password'];

    if(empty($username) === true || empty($password) === true){ 
        echo 'You need to enter a username and password';
    }
    else if(user_exists($username) === false) {
        echo 'We can\'t find that username.';
    }
}

?>

【问题讨论】:

  • 您的 $db 变量位于函数内部,因此超出了定义它的代码的范围。声明它是全局的,或者更好的是,将它作为参数传递给你的函数。请参阅scope上的 PHP 手册
  • 我更改了变量,第一个错误已修复,但我仍然收到:致命错误:调用未定义函数 mysqli_result()
  • 我认为这是因为您在第一部分使用 OOP,而对结果使用程序。
  • 我是 php 新手,如何解决这个问题?
  • 我认为这是因为mysqli_result() 不是函数。我真的不清楚那段代码试图做什么,但mysqli_result() 在 PHP 中不存在。

标签: php mysql sql database-connection


【解决方案1】:

首先,您在函数外部声明了 $db。如果你想在函数内部使用它,你应该把它放在你函数代码的开头:

global $db;

我猜,当你写的时候:

if($result->num_rows){
        return (mysqli_result($query, 0) == 1) ? true : false;

你真正想要的是:

if ($result->num_rows==1) { return true; } else { return false; }

【讨论】:

  • 我没有再收到任何错误,但是当我测试时我似乎无法进入 'user_exists($username) === false' 你还有其他智慧吗今天和我分享:)
  • 是的,您的 SQL 查询将始终返回 1 行,其中 1 个字段表示用户数量等于用户名。将其更改为 "SELECT * FROM users WHERE UserName = '$username'" 即可使用
  • 我想通了,但非常感谢!你一直很有帮助!这就是我盲目跟随教程得到的结果
【解决方案2】:

将此行放入父构造中:$this->load->database();

function  __construct() {
    parent::__construct();
    $this->load->library('lib_name');
    $model=array('model_name');
    $this->load->model($model);
    $this->load->database();
}

这样..它应该可以工作..

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2020-03-11
    • 1970-01-01
    相关资源
    最近更新 更多