【发布时间】:2016-03-10 14:21:59
【问题描述】:
我刚开始学习 PHP 中的 OOP,如果这实际上是一个非常琐碎的问题,请原谅我。
我有一个名为 Engine 的类,我有一个扩展引擎的类数据库。 我在脚本中调用的一些类也扩展了引擎。 现在我想这样做,这样我就不必在我拥有的其他类的每个方法中将 $db 的实例设置为全局。
我认为解决方案是将 MySqlDatabase 类设为静态,但不知何故我得到了错误。 谁能告诉我我做错了什么?
这可能是一件非常简单的事情,但我现在有点卡住了。
提前致谢!
<?php
class MySqlDatabase extends engine{
public static $connection;
public static $query;
function __construct(){
MySqlDatabase::open_connection();
}
public static function open_connection(){
self::$connection=mysqli_connect("localhost","XXX","XXX","XXX");
mysqli_set_charset(self::$connection,'utf8') or die("Charset error");
}
public static function close_connection(){
mysqli_close(self::$connection);
}
public static function con(){
return self::$connection;
}
public static function query($query){
$result = mysqli_query(self::$connection,$query);
self::$query = $result;
self::confirm_query($result);
return $result;
}
public static function confirm_query($result){
if(!$result){
die("DB Query failed:".mysqli_error(self::$connection));
}
}
public static function mysql_prep($string) {
$escaped_string = mysqli_real_escape_string(self::$connection,$string);
return $escaped_string;
}
public static function num_rows(){
$result = mysqli_num_rows(self::$query);
return $result;
}
public static function fetch_array(){
$result = mysqli_fetch_array(self::$query);
return $result;
}
}
?>
现在,当我想从数据库中获取某些内容时,我会在使用时遇到错误: '; ?>
警告:mysqli_query() 期望参数 1 为 mysqli,在第 39 行的 /home/devogdata/public_html/includes/dbconnect.php 中给出 null
警告:mysqli_error() 期望参数 1 为 mysqli,在第 47 行的 /home/devogdata/public_html/includes/dbconnect.php 中给出 null 数据库查询失败:
【问题讨论】:
-
调用静态方法时,不使用
__construct()函数
标签: php database class oop static