Php DB类不会加载
我正在尝试使用simle db类进行连接。出于某种原因,它只能打印出来 初始化数据库类 test.php db.class.php class DB extends mysqli { private static $instance = null; private function __construct () { parent::init(); $host = 'localhost'; $user = 'root'; $pass = 'MY_PASS'; $dbse = 'MY_DB'; parent::real_connect($host, $user, $pass, $dbse); if (0 !== $this->connect_errno): die('MySQL Error: '. mysqli_connect_error()); //throw new Exception('MySQL Error: '. mysqli_connect_error()); endif; } public function fetch ($sql, $id = null, $one = false) { $retval = array(); if ($res = $this->query($sql)): $index = 0; while ($rs = $res->fetch_assoc()): if ($one): $retval = $rs; break; else: $retval[$id ? $rs[$id] : $index++] = $rs; endif; endwhile; $res->close(); endif; return $retval; } } 我试图搜索我的日志文件以查找错误,但结果是空的。好的,知道了 在呼叫db时,呼叫新db;这意味着您正试图调用DB类的构造函数 在您的DB类中,看起来您正试图创建一个单例,但是缺少了一些东西,通常会为实例分配数据库连接,并询问实例是否为空,创建一个新连接,或者是否使用同一实例 在一天结束时,您可以将构造函数更改为public。尝试以下方法: Db_类:Php DB类不会加载,php,mysqli,Php,Mysqli,我正在尝试使用simle db类进行连接。出于某种原因,它只能打印出来 初始化数据库类 test.php db.class.php class DB extends mysqli { private static $instance = null; private function __construct () { parent::init(); $host = 'localhost'; $user = 'root'; $pass = 'MY_PASS';
class Db_class{
/***********************CONNECT TO DB*********************/
public function db_connect(){
$user = '***';
$db = '***';
$password = '***';
$host = '***';
try {
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $password);
}
catch(PDOException $err) {
echo "Error: ".$err->getMessage()."<br/>";
die();
}
return $dbh;
}
/******************PREPARE AND EXECUTE SQL STATEMENTS*****/
public function query($statement){
$keyword = substr(strtoupper($statement), 0, strpos($statement, " "));
$dbh = $this->db_connect();
if($dbh){
try{
$sql = $dbh->prepare($statement);
$exe = $sql->execute();
}
catch(PDOException $err){
return $err->getMessage();
}
switch($keyword){
case "SELECT":
$result = array();
while($row = $sql->fetch(PDO::FETCH_ASSOC)){
$result[] = $row;
}
return $result;
break;
default:
return $exe;
break;
}
}
else{
return false;
}
}
您的构造函数被标记为private,这意味着新数据库将引发错误。我看到您有一个私有属性来存储一个实例,您是否缺少返回一个新对象的singleton方法?为什么要重新发明轮子?只需使用PDO对象,也可以考虑这一点。但现在我只是想找出我做错了什么。把这个添加到脚本ini_集合“display_errors”,“1”的顶部;错误报告全部;然后再运行一次。希望能打印出任何错误。尝试了这个。它不需要工作:我确实得到了一个空白页。当然你得到了一个blnak页,你在那里没有输出。添加:var_dump$result;到另一个PHP查看执行的SQL语句的结果,不要忘记添加用户名、数据库名、密码和服务器地址主机!Y.Hermes,我确实打印了$result。问题是结尾缺少了一个}。是的,在添加了´}之后,它工作了。谢谢这是一个大型PDO DB类的一部分吗?出于我的需要,它是所有PDO类的一部分。这是我的第一个cms的一部分-
class Db_class{
/***********************CONNECT TO DB*********************/
public function db_connect(){
$user = '***';
$db = '***';
$password = '***';
$host = '***';
try {
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $password);
}
catch(PDOException $err) {
echo "Error: ".$err->getMessage()."<br/>";
die();
}
return $dbh;
}
/******************PREPARE AND EXECUTE SQL STATEMENTS*****/
public function query($statement){
$keyword = substr(strtoupper($statement), 0, strpos($statement, " "));
$dbh = $this->db_connect();
if($dbh){
try{
$sql = $dbh->prepare($statement);
$exe = $sql->execute();
}
catch(PDOException $err){
return $err->getMessage();
}
switch($keyword){
case "SELECT":
$result = array();
while($row = $sql->fetch(PDO::FETCH_ASSOC)){
$result[] = $row;
}
return $result;
break;
default:
return $exe;
break;
}
}
else{
return false;
}
}
$db = new Db_class();
$sql = "SQL STATEMENT";
$result = $db->query($sql);