简体   繁体   English

未捕获的错误:在C:\\ xampp \\ htdocs \\ pro \\ ProController \\ DatabaseConfig.class.php:47中对整数调用成员函数fetch_assoc()

[英]Uncaught Error: Call to a member function fetch_assoc() on integer in C:\xampp\htdocs\pro\ProController\DatabaseConfig.class.php:47

I am new to OOP in PHP and MYSQL. 我是PHP和MYSQL中OOP的新手。 I looked for the solutions everywhere but could not find exactly what I am looking for. 我到处都在寻找解决方案,但找不到确切的解决方案。 I am facing with the 我正面临着

Fatal Error: Call to a member function fetch_assoc() on integer . 致命错误: 在integer上调用成员函数fetch_assoc()。

As you can see it says an integer. 如您所见,它表示一个整数。 Please let me know where am I making a mistake. 请让我知道我在哪里犯错。

  • Login Function in UserController is working well. UserController中的登录功能运行良好。
  • I have created a separate function for fetch(). 我为fetch()创建了一个单独的函数。

DatabaseConfig.class.php DatabaseConfig.class.php

  <?php

       /**  * Connects to Database  */ 
   class DatabaseConnect {  
   protected $db_host = 'localhost';
   protected $db_name = 'procusa';
   protected $db_user = 'root';
   protected $db_pass = '';
   private $conn;   


    public function __construct()   
     {      
        $this->conn = new mysqli($this- 
       >db_host,$this->db_user,$this->db_pass,$this->db_name);

        if($this->conn->connect_error) {
            header("Location: ../ErrorHandlers/DBError");       
          }          
           return true;     
        }

    public function query($query)
     {      
        $status = $this->conn->query($query);
        if(!$status) return $this->conn->error;
        else return 1;  
          }


    public function fetch($result) 

    { 
      $row = $result->fetch_assoc();
       if(!$fetch) echo "Could Not Fetch";
          else return $row;
    }

}


$con = new DatabaseConnect();

?>

UserController.class.php UserController.class.php

<?php session_start(); ?>
<?php

/**
 * Class Template For Users
 */

class ProcusaUsers extends DatabaseConnect
{


    function RegisterUser($password,$email,$phone,$username)
    {   
        $reg_query = "INSERT INTO `registeredusers` (`id`, `email`, `password`, 
         `username`, `regd_time`)
        VALUES (NULL, '".$email."', '".$password."', '".$username."', NOW());";

        if( $result = DatabaseConnect::query($reg_query) ) {
            $_SESSION['line'] = 1; //1 for ON Line
            $_SESSION['email'] = $email;
            header("location: index.php");
        }
        else 
            echo $result;

    }

    function AddMore($name) {}

    function Login($email,$password) {

        $login = "SELECT * FROM `registeredusers` WHERE email='$email' AND password = '$password'";
        if($status = DatabaseConnect::query($login) ) {
            $_SESSION['line'] = 1; 
            $r = DatabaseConnect::fetch($status);
            return $r;

        } return false;
    }
}

$user = new ProcusaUsers();
?>

login.php login.php

  <?php

if (isset($_POST['signin'])) {
    if($result = $user->Login($_POST['email'] , $_POST['password'])) {
         $row = $con->fetch_assoc($result);
           print_r($row);
    }
}

?>

DatabaseConnect::query in your code returns 1 , but it should return a mysqli_result object. 您代码中的DatabaseConnect::query返回1 ,但是它应该返回一个mysqli_result对象。

At line if(!$status) return $this->conn->error; if(!$status) return $this->conn->error; it must be identical comparsion with false value. 它必须是具有false值的相同比较。 Because, for example, if query SELECT COUNT(*) FROM ... will return 0 , your code will return an error (see converting to boolean ), but actually it will be a numeric result. 因为例如,如果查询SELECT COUNT(*) FROM ...将返回0 ,则您的代码将返回错误(请参阅转换为boolean ),但实际上它将是数字结果。 So change this line to: 因此,将这一行更改为:

if ($status === false) {
   return $this->conn->error;
}

You should to rename fetch method to fetchOneRow , because this name more accurately reflects what the method does. 您应该将fetch方法重命名为fetchOneRow ,因为此名称更准确地反映了该方法的作用。

Please follow naming conventions (for ex. Zend naming convention ) and start your methods names with lowercase letter. 请遵循命名约定(例如Zend命名约定 ),并以小写字母开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何修复&#39;未捕获错误:调用整数&#39;上的成员函数fetch_assoc() - How to fix 'Uncaught Error: Call to a member function fetch_assoc() on integer' Php -MySQL 查询失败 - 错误致命错误:未捕获错误:调用成员函数 fetch_assoc() on boolean - Php -MySQL query failing - error Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean PHP-调用成员函数fetch_assoc() - Php - Call to a member function fetch_assoc() php错误:在布尔值上调用成员函数fetch_assoc() - php error: Call to a member function fetch_assoc() on boolean Error Uncaught Error== 调用成员函数 fetch_assoc() 在 /*Source*/ 中的字符串 - Error Uncaught Error== Call to a member function fetch_assoc() on string in /*Source*/ 错误获取记录成功更新致命错误:未捕获错误:调用数组中的成员函数fetch_assoc() - Getting error Record updated successfully Fatal error: Uncaught Error: Call to a member function fetch_assoc() on array 调用成员函数fetch_assoc()时发生致命错误-为什么fetch_assoc()无法正常工作? - Fatal error to Call to a member function fetch_assoc() - why is fetch_assoc() is not working? 在null中,对成员函数fetch_assoc()的致命错误未捕获的错误调用 - Fatal Error uncaught error call to a member function fetch_assoc()on null in php - 在非对象上调用成员函数 fetch_assoc() - php - Call to a member function fetch_assoc() on a non-object Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\shop\index.php - Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\shop\index.php
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM