这就是我的数据库类:
<?php
// Define configuration
define("DB_RDBMS", "mysql");
define("DB_HOST", "localhost");
define("DB_NAME", "ccaweb");
define("DB_USER", "ccawebroot");
define("DB_PASS", "Ni2o7AwE");
class database {
// Database Managment System (Database Type)
private $rdbms = DB_RDBMS;
// Database Host Address/IP
private $dbhost = DB_HOST;
// Database Name
private $dbname = DB_NAME;
// Database User Name
private $dbuser = DB_USER;
// Database Password
private $dbpass = DB_PASS;
//
private $con = false;
public function __construct ()
{
//connect to database
if (!$this->con)
{
//not yet connected, make a connection
try
{
$this->db = new PDO($this->rdbms.':host='.$this->dbhost.';dbname='.$this->dbname, $this->dbuser, $this->dbpass);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->con = true;
return $this->con;
}
catch (PDOException $e)
{
require_once('/error/database_error.php');
$date = date("d/m : H:i : ");
file_put_contents('logs/db.connection.error.txt', $date.$e->getMessage().PHP_EOL,FILE_APPEND);
exit();
}
}
else
{
//already connected - do nothing and show true
return true;
}
}
}
?>
这就是我使用该类所做的事情:
// Import database class file
include_once '../library/class/database.class.php';
//create new database instance
$db = new database();
// Create Table
$query = "DROP TABLE IF EXISTS `courseannouncement`;
CREATE TABLE IF NOT EXISTS `courseannouncement` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`courseId` varchar(10) NOT NULL,
`title` varchar(100) NOT NULL,
`announcementText` text NOT NULL,
`createdBy` int(11) NOT NULL,
`createdDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`deleted` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)";
$sth = $db->prepare("$query");
$sth->execute();
?>
但是我收到以下错误:致命错误:在第 22 行的 D:..\installDatabase.php 中调用未定义的方法 database::prepare()
所以我尝试将数据库类更改为
class database extends PDO {
但这仍然给我一个错误
谁能指出我做错的方向?是否对 PDO 数据库连接使用类最佳实践?
另外,我应该使用单例吗?我见过很多他们说这很好的地方,但也有很多帖子说使用单例是不好的。