web-dev-qa-db-fra.com

Erreur fatale: appel à une requête de fonction membre () sur null

Je ne sais pas ce qui ne va pas ici. Je suivais juste un tutoriel en ligne et ces erreurs sont apparues.

Je reçois les erreurs suivantes

Erreur

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

Code

<?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.';
    }
}

?>
11
MPStimpson

Tout d'abord, vous avez déclaré $ db en dehors de la fonction. Si vous souhaitez l'utiliser à l'intérieur de la fonction, vous devez le mettre au début de votre code de fonction:

global $db;

Et je suppose que lorsque vous avez écrit:

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

ce que vous vouliez vraiment c'était:

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

mettre cette ligne dans la construction parent: $ this-> load-> database ();

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

de cette façon .. cela devrait fonctionner ..