2013-12-08 3 views
-1

Я сделал 2 файла 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();   
    }   
} 

    ?> 

class.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 
+1

Connect() не является членом класса базы данных. – erenon

+0

Thank's ... Как я дурак :) – user2467583

ответ

3

Переключите функцию соединять в классе базы данных, а не из него (в этом файле : class.database.php)

0

Функция 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;  
// 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 
+0

Thank's Miguelo ... – user2467583

0

Простой ... Ты должен это изменение:

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();   
     }   
    }  
} 

Вы закрыли свой класс перед функцией, поэтому, когда вы назвали функцию внутри класс, это не сработало.

+0

hmmm .... спасибо .... – user2467583

0

Вы подключения функция должна быть методом класса:

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();   
     }   
    } 
} 
Смежные вопросы