これは私がデータベースクラスとして持っているものです:
<?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();
?>
ただし、次のエラーが表示されます: Fatal error: Call to undefined method database::prepare() in D:..\installDatabase.php on line 22
だから私はデータベースクラスを
class database extends PDO {
しかし、それでもエラーが発生します
誰かが私が間違っている方向に私を向けることができますか? PDO データベース接続にクラスのベスト プラクティスを使用していますか?
また、シングルトンを使用する必要がありますか? シングルトンを使用するのは良いことだと言っているさまざまな場所を見てきましたが、シングルトンを使用するのは悪いことだと言っている投稿もたくさんあります。