2015-07-11 94 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; 
} 
相关问题