单例模式封装PDO链接数据库

使用单例模式封装PDO链接数据库

1、封装php Single 类

<?php
class Single
{
    private static $_instance = null;
    private function __construct(){}
    private function __clone(){}
    public static function getInstance()
    {
        if (self::$_instance === null) {
            self::$_instance = new Single();
        }
        return self::$_instance;
    }
    public function hehe($dbName){
        return new PDO('mysql:host=localhost;dbname='.$dbName.';', 'root', 'root');    
    }
}
?>

2、引用

<?php
require 'Single.class.php';
$db = Single::getInstance();
$pdo=$db->hehe('DBname');

$data=$pdo->query('desc tableName'/sql)->fetch();
var_dump($data);
die;
$db->destruct();
?>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自主封装PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: <?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合查询,如:获取用户列表或者单个用户信息 execute_request(HttpRequestMethod::Get, function() { $action = request_action(); //判断是否存在 if ($action == 1) { list($type, $value) = filter_request(array( request_int('type', 1, 2, 3), //1.用户名 2.邮箱 3.手机号 request_string('value'))); $type_field_map = array( 1 => User::$field_username, 2 => User::$field_email, 3 => User::$field_phone ); if ($type == 2 && !is_email($value) || $type == 3 && !is_mobilephone($value)) { die_error(USER_ERROR, $type_field_map[$type]['name'] . '格式无效'); } $user = new User(); $user->set_where_and($type_field_map[$type], SqlOperator::Equals, $value); $result = $user->exists(create_pdo()); echo_result($result ? 1 : 0); //存在返回1,不存在返回0 } //查询单条信息 if ($action == 2) { list($userid) = filter_request(array( request_userid())); //查询单条数据 $user = new User($userid); //set_query_fields可以指定查询字段,下面两种写法均可 //$user->set_query_fields('userid, username, email'); //$user->set_query_fields(array(User::$field_userid, User::$field_username, User::$field_email)); //还可设置where条件进行查询 //$user->set_where_and(User::$field_status, SqlOperator::Equals, 3); //$user->set_where_and(User::$field_truename, SqlOperator::IsNullOrEmpty); //$user->set_where_and(User::$field_age, SqlOperator::In, array(27, 29)); //$user->set_where_and(User::$field_regtime, SqlOperator::LessThan, '-6 month'); //创建数据库连接 $db = create_pdo(); $result = $user->load($db, $user); //也可以用Model类的静态方法 //$result = Model::load_model($db, $user, $user); if (!$result[0]) die_error(PDO_ERROR_CODE, '获取用户信息时数据库错误'); if (!$user) di
好的,下面是一个简单的 PHP PDO 封装类的示例: ```php class Database { private $host = "localhost"; private $user = "username"; private $password = "password"; private $database = "database"; private $charset = "utf8mb4"; private $pdo; public function __construct() { $dsn = "mysql:host={$this->host};dbname={$this->database};charset={$this->charset}"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; $this->pdo = new PDO($dsn, $this->user, $this->password, $options); } public function query($sql, $params = []) { $stmt = $this->pdo->prepare($sql); $stmt->execute($params); return $stmt; } public function fetchAll($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->fetchAll(); } public function fetch($sql, $params = []) { $stmt = $this->query($sql, $params); return $stmt->fetch(); } public function insert($table, $data) { $keys = array_keys($data); $values = array_values($data); $placeholders = implode(',', array_fill(0, count($values), '?')); $sql = "INSERT INTO $table (" . implode(',', $keys) . ") VALUES ($placeholders)"; $this->query($sql, $values); return $this->pdo->lastInsertId(); } public function update($table, $data, $where) { $set = []; $values = []; foreach ($data as $key => $value) { $set[] = "$key = ?"; $values[] = $value; } $sql = "UPDATE $table SET " . implode(',', $set) . " WHERE $where"; return $this->query($sql, $values)->rowCount(); } public function delete($table, $where) { $sql = "DELETE FROM $table WHERE $where"; return $this->query($sql)->rowCount(); } } ``` 这个类封装PDO,包含了常用的查询操作,如 query、fetchAll、fetch,以及增删改操作,如 insert、update、delete。你可以根据自己的需要进行扩展。使用时,只需要实例化这个类,并调用相应的方法即可。例如: ```php $db = new Database(); $rows = $db->fetchAll("SELECT * FROM table WHERE id = ?", [1]); ``` 这个示例会查询一个 ID 为 1 的记录,并返回一个数组。你可以根据需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值