1. ホーム
  2. php

[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。

2022-02-20 18:45:43

質問

何が問題なのかよくわからない。ネットでチュートリアルを見ていたら、このようなエラーが表示されました。

次のようなエラーが表示されます。

エラー

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を関数の外で宣言しています。もし関数内で使用したいのであれば、これを関数コードの最初に記述する必要があります。

global $db;

と、書いたところでしょうか。

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

本当に欲しかったものは

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