Вызов функции-члена query () для не-объекта Ошибка, как исправить? - PullRequest
0 голосов
/ 03 июля 2011

Я пробую каждую вещь, но она не работает, пожалуйста, кто-нибудь проверяет этот код?

Это файл Database.class.php ..

class Database
{
public $db = NULL;
public $libraries = NULL;

public function Database( $config )
{
    $this->Connect( $config['host'], $config['user'], $config['pass'], $config['database'] );
}
public function Connect($host, $user, $pass, $db)
{
    $this->db = new mysqli( $host, $user, $pass, $db );
}

public function query( $sql )
{
    $f = func_get_args( );
    $i = 1;
    while ( $i <= count( $f ) )
    {
        $args[] = addslashes( $f[$i] );
        ++$i;
    }
    $query = $this->createQuery( $sql, $args );
    if ( !( $result = $this->db->query( $query ) ) )
    {
        exit( mysqli_error( $this->db ) );
    }
    return $result;
}

public function fetch_assoc( $result )
{
    return $result->fetch_assoc( );
}

public function createQuery( $sql, $args )
{
    $i = 0;
    while ( $i != count( $args ) )
    {
        $sql = preg_replace( "/%s/", str_replace( "s", "\\s", $args[$i] ), $sql, 1 );
        ++$i;
    }
    return $sql;
}
}

А это файл Template.class.php ..

public function getPageInfo( $page )
{
$result = $this->Database->query( "select * from `content` where `name` = '%s'", $page );
    $row = $result->fetch_assoc( );
    if ( $result->num_rows == 0 )
    {
        return false;
    }
    return $row;
}

Библиотеки включены в index.php PHP .. Первый Database.class.php 2nd Template.class.php

А также я прикрепил оба файла ..

http://www.mediafire.com/?xuak9ub7lehkbun

1 Ответ

1 голос
/ 03 июля 2011

Чарльз Спрейберри совершенно прав. Код, который вы разместили здесь, либо неполон, либо вы действительно забыли создать экземпляр класса вашей базы данных. Первое, чего не хватает в этом коде, - это то место, где вы определили свой класс. Что-то вроде class myDataBase {} отсутствует. Ну, по крайней мере, я надеюсь, что вы хотели создать его, потому что вы используете $this->. Во-вторых, вы использовали $this->db в своей функции Connect(), но пытаетесь использовать $this->Database в своей функции getPageInfo(). Пожалуйста, предоставьте дополнительную информацию о классе, где находится функция getPageInfo() и как вы создали экземпляр своего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...