你能解释一下这个错误信息吗


Can you explain about this Error Message?

我制作了两个php文件:

  1. class.datebase.php
  2. class.ManageDatabase.php

我用来连接数据库的这个文件。。。但我犯了错误。。。

你能帮我吗…

class.database.php:

<?php 
include_once ( '../config.php' );
class database {
    protected $db_conn;
    public $db_name = DB_NAME;
    public $db_host = DB_HOST;
    public $db_user = DB_USER;
    public $db_pass = DB_PASS;      
}
function connect(){
        try { 
             $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
             return $this->db_conn;         
        } catch(PDOException $e) {
             return $e->getMessage();           
    }           
}
  ?>

类。ManageDatabase.php:

<?php 
  class ManageDatabase{ 
      public $link;
      function __construct(){
          include_once( 'class.database.php' );
          $conn = new database;
          $this->link = $conn->connect();
          return $this->link;   
      }
  }
  $something = new ManageDatabase;
  echo $something;
?>

错误:

Fatal error: Call to undefined method database::connect() in C:'xampp'htdocs'myweb'crud'core'class.ManageDatabase.php on line 9

将连接函数放在Database类中,而不是放在它之外(在此文件中:class.Database.php)

函数连接是在类数据库之外定义的

class database {
    protected $db_conn;
    public $db_name = DB_NAME;
    public $db_host = DB_HOST;
    public $db_user = DB_USER;
    public $db_pass = DB_PASS;      
// don't close the class here
function connect(){
        try { 
             $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
             return $this->db_conn;         
        } catch(PDOException $e) {
             return $e->getMessage();           
    }           
}
} //close it here

简单。。。你必须改变这个:

class database {
protected $db_conn;
public $db_name = DB_NAME;
public $db_host = DB_HOST;
public $db_user = DB_USER;
public $db_pass = DB_PASS; 

}
function connect(){
        try { 
             $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
             return $this->db_conn;         
        } catch(PDOException $e) {
             return $e->getMessage();           
    }
}

class database {
    protected $db_conn;
    public $db_name = DB_NAME;
    public $db_host = DB_HOST;
    public $db_user = DB_USER;
    public $db_pass = DB_PASS;
function connect(){
        try { 
             $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
             return $this->db_conn;         
        } catch(PDOException $e) {
             return $e->getMessage();           
        }           
    }      
}

您在函数之前关闭了类,所以当您在类内部调用函数时,它不起作用。

您的connect函数应该是类的一个方法:

class database {
    protected $db_conn;
    public $db_name = DB_NAME;
    public $db_host = DB_HOST;
    public $db_user = DB_USER;
    public $db_pass = DB_PASS;      
    function connect(){
        try { 
             $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
             return $this->db_conn;         
        } catch(PDOException $e) {
             return $e->getMessage();           
        }           
    }
}