2011-09-22 1 views
0

스크립트가 단순하지만 일견 스스로 해결할 수없는 문제가 있습니다 ... 나는 단순히 sth를 쓰고 싶다. 다음 스크립트와 MySQL 데이터베이스 (AUTO_INCREMENT 아이디)에 : 나는 그냥주지 않고 코드를 실행하는 등 많은 일을 시도> PEAR MDB2 클래스를 호출하려고 할 때 객체가 아닌 객체에 exec()를 호출하십시오

$input = new addToDb(); 
    $input->addTrip(); 
    $input->disconnectDb(); 

:

<?php 
// Create a valid MDB2 object named $mdb2 
// at the beginning of your program... 
require_once 'MDB2.php'; 

// Once you have a valid MDB2 object named $mdb2... 

class addToDb extends MDB2 { 

    function __construct() { 

     $mdb2 =& MDB2::connect('mysql://************************'); 
      if (PEAR::isError($mdb2)) { 
       die($mdb2->getMessage()); 
      } 

    } 

    // 1) Add general information into trips 
    function addTrip() { 

     $title = $_POST['title']; 
     $author = $_POST['author']; 
     $description = $_POST['description']; 
     $date_start = $_POST['date_start']; 
     $date_end = $_POST['date_end']; 

     if(isset($title)) echo $title; 
     else echo "!!"; 

     //$id = $mdb2->extended->getAfterID($id); 

     $sql = "INSERT INTO trips (title, author, description, date_start, date_end) 
       VALUES ($title, $author, $description, $date_start, $date_end)"; 

     $affected =& $mdb2->exec($sql); 

     // Always check that result is not an error 
     if (PEAR::isError($affected)) { 
      die($affected->getMessage()); 
     } 

    } 


    // Disconnect 
    function disconnectDb() { 

     $mdb2->disconnect(); 

    } 

} 


?> 

그리고 내가 개체를 호출 할 방법 클래스에서 항상 동일한 오류 :

Fatal error: Call to a member function exec() on a non-object in /www/htdocs/w007bba1/v3/_class/_general/_db.php on line 36 

라인 (36)은

을 나타냅니다

내 addToDb 클래스. 누군가가 제 스크립트가 틀린 곳을 말할 수 있다면 고맙겠습니다. 나는 지금까지 다른 게시물에서 어떤 도움도 찾을 수 없었습니다 ...

감사합니다! 스톡

답변

0

마치 $mdb2처럼 보이지 않습니다. 오류라고 생각합니다.

$mdb2을 초기화하는 것이 문제이지만, 변수는 __construct의 범위에서만 사용할 수 있습니다. addTrip()에서 사용할 수 있으려면 클래스 변수에 저장해야합니다.

+0

if (! is_object ($ mdb2)) { echo "NO OBJECT!"; } ok 이것은 NO OBJECT를 반환하므로 객체가 내 함수에서 단지 aivailable이 아닐 것입니다 ... – mikesierra

-1

PDO는 DB 사용자 및 암호 대신 Cpanel 사용자 및 암호를 사용합니다.

+0

이것은 pdo에 관한 것이 아닙니다. – cweiske