2015-07-11 59 views
1

中給出我正在處理新的PHP站點,並且我需要幫助解決此錯誤。警告:mysqli_query()期望參數1是mysqli,null在

警告:mysqli_query()預計參數1是mysqli的,空中給出 ..

我有類Database.class,和一個抽象類ActiveRecord.php。

class Database { 
    private static $instance = null; 
    private function __construct(){} 
    public static function getInstance(){ 
     if(!self::$instance){ 
      self::$instance = mysqli_connect(DBHOST, DBUSER, DBPASS, DB); 
      return self::$instance; 
     } 
    } 
} 

和新的文件中的ActiveRecord類。

 abstract class ActiveRecord { 
    public function save() { 
     $q = "UPDATE " . static::$table . " SET "; 
     foreach($this as $k=>$v){ 
      if($k==static::$key) continue; 
      $q.=$k."='".$v."',"; 
     } 
     $q = rtrim($q,","); 
     $keyField = static::$key; 
     $q.=" WHERE ".static::$key." = " . $this->$keyField; 
     mysqli_query(Database::getInstance(), $q); 
    } 
} 

當我測試save();函數我得到mysqli警告。我創建了新文件並將其寫入其中。

class Category extends ActiveRecord { 
    public static $table = "categories"; 
    public static $key = "category_id"; 
} 

$cat = Category::get(1); 
$cat->name = "Action"; 
$cat->description = "Action Description"; 
$cat->save(); 

問題是在save()函數中無法識別Database :: getInstane()。但如果我把「mysqli_connect(」localhost「,」root「,」「,」db「)」一切工作正常,腳本更新數據庫記錄。

有誰知道這是什麼問題?

+0

'公共靜態函數的getInstance(){如果(!自:: $實例){自:: $實例= mysqli_connect(DBHOST,DBUSER,DBPASS,DB) ;} return self :: $ instance; }' – jagad89

+0

注意return語句'if'外 – jagad89

+0

謝謝你,現在正在工作。 ;) – m1l4n

回答

1

問題是,如果實例已經創建,你沒有返回任何東西。

更新您的getInstance功能如下

public static function getInstance(){ 
if(!self::$instance){ 
self::$instance = mysqli_connect(DBHOST, DBUSER, DBPASS, DB); 
} 
return self::$instance; 
} 
相關問題