就自己用着舒服,要说面面俱到那肯定是没有的,但是我自己还是觉得现阶段够用,以后再说呗
<?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); } }