0

我的代码中有错误: 致命错误:在第 23 行的 /var/www/crud_php/core/class_ManageDatabase.php 中的非对象上调用成员函数 query()

错误行:$query = $this->link->query("SELECT * FROM $table_name ORDER BY id ASC");

<?php

class ManageDb{
    public $link;

    function __construct() {
        include_once 'class_database.php';
        $conn = new database;
        $this->link = $conn->connect();

        return $this->link;
    }

    function getData($table_name, $id=null){
        if(isset($id)){
            $query = $this->link->query("SELECT * FROM $table_name WHERE id = '$id' ORDER BY id ASC");
        }else{
         **$query = $this->link->query("SELECT * FROM $table_name ORDER BY id ASC");**   
        }

        $rowCount = $query->rowCount();
        if ($rowCount >=1){
            $result = $query->fetchAll();
        }else{
            $result = 0;
        }

        return $result;
    }


}



?>

数据库连接:

<?php
include_once '../config.php';

class database {

    protected $db_conn;
    public $db_name = DB_NAME;
    public $db_host = DB_HOST;
    public $db_pass = DB_PASS;
    public $db_user = DB_USER;

    function connect() {
        try {
            $this->db_conn = new PDO("mysql:host = $this->db_host;dbname=$this->db_name", $this->db_user, $this->db_pass);
        } catch (PDOException $e) {
            return $e->getMessage();
        }
    }

}

?>
4

1 回答 1

1

这意味着$this->link不是一个对象。connect()您忘记在您的方法中返回连接。添加return $this->db_conn;该方法。

附带说明一下,在出错的情况下返回一个字符串是一个非常糟糕的主意。让异常传播或终止脚本 - 但不要完全返回会在您的代码中导致奇怪错误的其他内容。您也不能从构造函数返回任何内容。

于 2012-06-03T13:04:43.620 回答