MySQLi bir sınıf olarak statik

0 Cevap php

Ben bir veritabanı nesnesinin tek bir statik örneği olan sınıf, satır ve sütun için iki statik işlevler oluşturmak mümkün aşağıdaki kodu var.

<?php class Database{

    private static $instance;

    private function __construct() {}
    private function __clone(){}

    public static function call(){
        if(!isset(self::$instance)){  
            self::$instance = new MySQLi("localhost", "foo", "bar", "fizz");  
            if(self::$instance->connect_error){  
                throw new Exception('Error MySQL: ' . self::$instance->connect_error);  
            }  
        } 
        return self::$instance;
    }

    public static function getRow($id, $db){
        $query = "SELECT * FROM ".$db." WHERE id=".$id;
        $result = self::call()->query($query);
        return $result->fetch_assoc();
    }
} ?>

Ancak, başka bir sınıftan GetRow çağırdığınızda, bu gibi

$data = Database::getRow($id, "posts");

Ben şu hatayı alıyorum:

Fatal error: Call to a member function fetch_assoc() on a non-object in database.php on line 27

Ve tekrar ve tekrar kontrol edin ve her şey yolunda gibi görünüyor, belki çağrıda bir hata var (?)

0 Cevap