就自己用着舒服,要说面面俱到那肯定是没有的,但是我自己还是觉得现阶段够用,以后再说呗
<?php
require_once "config.php";
class DB {
static private $dbh = NULL;
function __construct() {
// 构造函数
try {
$this->dbh = new PDO("mysql:host=".DB_HOST.";port=".DB_PORT.";dbname=".DB_NAME, DB_USERNAME, DB_PASSWORD);
$this->dbh->exec("set names utf8");
} catch (PDOException $e) {
$this->logger($e->getMessage());
die("db err");
}
}
function query($query, $conditions=null) {
// 如果没有传入参数
if ($conditions == null) {
$stmt = $this->dbh->query($query);
if ($stmt === FALSE) {
// query 函数的出错信息是存放在 dbh 中的
$this->logger(var_export($this->dbh->errorInfo(), TRUE));
return FALSE;
}
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// 如果传入的参数不是数组类型,转换成数组
if ( ! is_array($conditions)) {
$conditions = array($conditions);
}
// 预编译语句
$stmt = $this->dbh->prepare($query);
if ( ! $stmt->execute($conditions)) {
$this->logger(var_export($stmt->errorInfo(), TRUE));
return FALSE;
}
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
function getLastID() {
return $this->dbh->lastInsertId();
}
function logger($msg='') {
file_put_contents("db.log.txt",
'[' . date('Y-m-d H:i:s') . '] ' . $msg . PHP_EOL,
FILE_APPEND);
}
}