我尝试使用simle db类进行连接。出于某种原因,它只打印出来 "发起数据库课程"
test.php的
include 'db.class.php';
echo 'Initiate DB class';
$db = new DB();
echo 'DB class did load';
db.class.php
include 'db.class.php';
echo 'Initiate DB class';
$db = new DB();
echo 'DB class did load';
}
我试图在我的日志文件中搜索错误,但它们是空的。
答案 0 :(得分:0)
好的,
在您调用db时调用新的DB();这意味着你试图调用数据库类的构造函数。
在你的数据库类中,它看起来像你正在尝试创建一个单例,但是通常会缺少某些东西来为实例分配数据库连接,并且会询问实例是否为空创建新连接或如果它不使用相同的实例。
在一天结束时,您可以将构造函数更改为public。
答案 1 :(得分:0)
试试这个:
Db_class:
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;
}
}
其他PHP:
$db = new Db_class();
$sql = "SQL STATEMENT";
$result = $db->query($sql);
答案 2 :(得分:0)
您的构造函数标记为private
,这意味着new DB
将引发错误。我看到你有一个私有属性来存储一个实例,你是否缺少返回一个新对象的单例方法?