mikehenrty/thin-pdo-wrapper

一个简单的数据库抽象层,用于使用PDO连接MySQL、Postgres和SQLite。

1.0.1 2016-08-03 21:47 UTC

This package is not auto-updated.

Last update: 2024-09-25 12:00:35 UTC


README

一个利用PHP PDO的简单数据库客户端。

优点

  • 每个请求最多维护一个从数据库连接和一个主数据库连接。
  • 自动使用从连接进行数据检索,主连接进行写入。
  • 随机选择从连接,如果不存在从连接则自动回退到主连接。
  • 强制数据净化(使用PDO预处理语句和绑定参数)。
  • 捕获所有错误,并在配置的情况下将它们写入错误日志。
  • 自动为创建和更新操作添加时间戳
  • 使用单个查询处理多个插入操作。
  • 如果需要执行连接或二级查询,则回退到自定义查询。
  • 仅使用关联数组进行输入/输出处理

配置

主数据库

  $pdo->configMaster(
    'myhostname.example',
    'my_database_name',
    'my_database_user',
    'my_database_password',
    'my_database_port' // optional
  );

从数据库(可选)

  $pdo->configSlave(
    'myhostname1.example',
    'my_database_name',
    'my_database_user',
    'my_database_password',
    'my_database_port' // optional
  );

  $pdo->configSlave(
    'myhostname2.example',
    'my_database_name',
    'my_database_user',
    'my_database_password',
    'my_database_port' // optional
  );
  // etc

示例

选择

  $results = PDOWrapper::instance()->select('post', array('thread_id'=>$thread_id));
  $results = PDOWrapper::instance()->select('thread', array('open'=>0), $limit+1, $start, array('favs'=>'DESC'));

插入

  $invite_id = PDOWrapper::instance()->insert('invite', array(
    'user_id' => $user_id,
    'text' => $text,
    'invite_key' => $invite_key
  ));

带有绑定参数的复杂查询

  $post = PDOWrapper::instance()->queryFirst('
    SELECT invite.*, user.name FROM invite
    LEFT JOIN user ON user.id=invite.user_id
    WHERE invite_key=:invite_key
  ', array(':invite_key'=>$invite_key));