0

コードにエラーがあります: Fatal error: Call to a member function query() on a non-object in /var/www/crud_php/core/class_ManageDatabase.php on line 23

エラー行:$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 に答える