调用非对象的成员函数query()错误如何修复?

时间:2011-07-03 13:05:24

标签: php mysql class function

我尝试了所有的东西,但它不起作用,请一些人查看这段代码?

这是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 第二个Template.class.php

我还附上了这两个文件..

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

1 个答案:

答案 0 :(得分:1)

Charles Sprayberry是完全正确的。您在此处发布的代码要么不完整,要么您真的忘记创建数据库类的实例。此代码中缺少的第一件事是您定义类的位置。缺少class myDataBase {}之类的东西。好吧,至少我希望你想创建一个,因为你正在使用$this->。第二件事是您在$this->db函数中使用了Connect(),但在$this->Database函数中尝试使用getPageInfo()。请提供有关该类的更多信息,函数getPageInfo()所在的位置以及您如何创建类的实例。