警告:mysqli_query()期望参数1是mysqli,null在
问题描述:
中给出我正在处理新的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“)”一切工作正常,脚本更新数据库记录。
有谁知道这是什么问题?
答
问题是,如果实例已经创建,你没有返回任何东西。
更新您的getInstance
功能如下
public static function getInstance(){
if(!self::$instance){
self::$instance = mysqli_connect(DBHOST, DBUSER, DBPASS, DB);
}
return self::$instance;
}
'公共静态函数的getInstance(){如果(!自:: $实例){自:: $实例= mysqli_connect(DBHOST,DBUSER,DBPASS,DB) ;} return self :: $ instance; }' – jagad89
注意return语句'if'外 – jagad89
谢谢你,现在正在工作。 ;) – m1l4n