monoclus/db

PDO 的轻量级包装器。

0.1 2020-10-15 22:40 UTC

This package is auto-updated.

Last update: 2024-09-16 07:02:07 UTC


README

这是一个 PDO 的轻量级包装器。它的目的是解决 PDO 目前的一些明显不足。它**不是**PDO 的替代品。

快速示例

Connection::create()
    ->table('users')
    ->insert(['user_name'=>'tom',
              'first_name'=>'Tom',
              'last_name'=>'Sawyer']);

明显限制

  • 它不是 ORM。如果您需要 ORM,请尝试 Doctrine
  • 0.1 版本仅适用于 MySQL。
  • 它不是 PDO 的替代品

示例

连接到数据库

use monoclus\db

// Option 1: Create an object
$conn = new Connection($dsn, $user, $pass);

// Option 2: Use a builder
Connection::create($dsn, $user, $pass);

// Option 3: Create an object, but the parameters must be store in $_ENV
$conn = new Connection();

// Option 4: Use a builder with $_ENV parameters
Connection::create();

Connection::create()
    ->throwExceptionOnError()

插入

Connection::create()
    ->table('users')
    ->insert(['user_name'=>'tom',
              'first_name'=>'Tom',
              'last_name'=>'Sawyer']);

更新

Connection::create()
    ->table('users')
    ->filter(['id'=>4])
    ->update(['user_name'=>'tom',
              'first_name'=>'Tom',
              'last_name'=>'Sawyer']);

删除

Connection::create()
    ->table('users')
    ->filter(['id'=>4])
    ->delete();

所有其他情况

使用标准的 PDO 函数,并尽可能使用预处理语句。

https://php.ac.cn/manual/en/book.pdo.php

$sql = 'SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour LIKE :colour';
$sth = Connection::create()->prepare($sql);
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', "%{$colour}%");
$sth->execute();

或者,要更新更多记录

$sql = 'UPDATE fruit 
        SET calories = :calories + 5 
        WHERE colour = :colour';
$sth = Connection::create()->prepare($sql);
$sth->execute();