> Вызов функции-члена exec () для необъекта <когда я пытаюсь вызвать класс PEAR MDB2 - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть проблема, которую я, кажется, не могу решить самостоятельно, хотя сценарий довольно прост ... Я просто хочу написать sth. в базе данных MySQL (идентификатор auto_increment) со следующим скриптом:

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

    }

}


?> 

И вот как я хочу назвать объект:

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

Я пробовал много вещей, включая просто выполнение кода без помещения его в класс, всегда одна и та же ошибка:

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 представляет

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

в моем классе addToDb. Я был бы благодарен, если бы кто-то мог сказать мне, где мой сценарий неверен, я не мог найти никакой помощи в других сообщениях до сих пор ...

Привет! Stocki

Ответы [ 2 ]

0 голосов
/ 17 марта 2015

PDO использует пользователя и пароль Cpanel вместо пользователя и пароля БД.

0 голосов
/ 22 сентября 2011

Похоже, что $mdb2 не является объектом, как говорит ошибка.

Ваша проблема в том, что вы инициализируете $mdb2, но переменная доступна только в области действия __construct.Вы должны хранить его в переменной класса, чтобы иметь возможность использовать его в addTrip().

...