2013-07-08 3 views
0

자습서 내가 온라인에서하고있는 자습서에서는 두 개의 다른 PHP 파일을 만듭니다. 그것은 튜토리얼의 준비(), 아무것도에 실패 계속PHP PDO 멤버 함수 호출 비 객체에 대한 준비()

<?php 
include_once ('Database.php'); 

class ManageUsers 
{ 
    public $link; 

    function __construct() 
    { 
     $dbConnection = new dbConnection(); 
     $this -> link = $dbConnection -> connect(); 

     return $this -> link; 
    } 

    function registerUsers($username, $password, $ip_address, $date, $time) 
    { 
     $query = $this->link->prepare('INSERT INTO users(username, password, ip_address, reg_date, reg_time) VALUES (?,?,?,?,?)'); 

     $values = array(
      $username, 
      $password, 
      $ip_address, 
      $date, 
      $time 
     ); 

     $query -> execute($values); 
     $rowCount = $query -> rowCount(); 

     return $rowCount; 
    } 

} 

$users = new ManageUsers(); 

echo $users -> registerUsers("Bob", "Bob", "127.0.0.1", "07/08/2013", "9:34 A.M."); 
?> 

나 이유를 알려줍니다

<?php 
class dbConnection 
{ 
    protected $db_connection; 
    public $db_name = "todo"; 
    public $db_user = "root"; 
    public $db_password = ""; 
    public $db_host = "localhost"; 

    function connect() 
    { 
     try 
     { 
      $this -> db_connection = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this -> db_user, $this -> db_password); 

      return $this -> db_connection; 
     } 

     catch(PDOException $e) 
     { 
      return $e -> getMessage(); 
     } 
    } 

} 
?> 

이것은 ManageUsers.php 파일입니다 :이 Database.php 파일입니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

무엇이 오류입니까? – amamut

+0

return $ e -> getMessage();를 변경해보십시오. echo $ e -> getMessage(); 오류가 있는지 확인하십시오. – sker

+0

오류는 "비 객체에서 멤버 함수 prepare() 호출"입니다. – snowfi6916

답변

0

아마, 데이터베이스 연결이 잘못되면 그것은 대신 PDO 객체의 문자열 반환

$this -> db_connection = 
    new PDO("mysql:host=$this->db_host;dbname=$this->db_name", 
     $this -> db_user, $this -> db_password); 

당신은 그것을 조금 다른 작성해야 : 또한

$this -> db_connection = 
    new PDO("mysql:host={$this->db_host};dbname={$this->db_name}", 
     $this -> db_user, $this -> db_password); 

, 반드시 당신을을 오류를 정확하게 처리하십시오 (있는 경우 혼자서 찾았을 것입니다).

0

connect() 함수는 데이터베이스 객체 또는 오류 문자열을 반환합니다. 실제로 connect()를 반환하지 않고 오류를 throw하거나 $ this-> link가 __construct의 문자열인지 확인해야합니다. 어쨌든 생성자는 값을 반환하면 안됩니다. 그렇지 않으면 클래스 인스턴스 대신 변수에 값을 할당합니다.

관련 문제