使用PDO处理数据库连接和CRUD操作的PHP函数。

1.2.0 2023-01-17 20:25 UTC

This package is auto-updated.

Last update: 2024-09-22 22:39:25 UTC


README

用于处理数据库连接和CRUD操作的PDO原生PHP函数。

安装

使用composer轻松安装

composer require jyoungblood/dbkit
use VPHP\db;
require __DIR__ . '/vendor/autoload.php';

使用方法

db::init($settings)

初始化数据库连接。此函数的输出应分配给全局'database'变量。

$GLOBALS['database'] = db::init([
  'host' => 'localhost',
  'name' => 'database_name',
  'user' => 'username',
  'password' => 'password',
  'driver' => 'mysql', // optional, defaults to 'mysql'
  'port' => '3306', // optional, defaults to '3306'
  'charset' => 'utf8mb4', // optional, defaults to 'utf8mb4'
]);

db::insert($table, $input)

清理参数并将数据数组插入特定表中。
返回创建的记录的'id'字段。

$new_id = db::insert("celestial_bodies", [
  'name' => 'Luna',
  'classification' => 'moon',
  'comment' => 'Earth\'s moon, also commonly referred to as "the moon"'
]);

echo $new_id;

db::find($table, $criteria, $options)

清理参数并从特定表中检索特定的记录(多个记录),构建带有SELECT *的查询。
返回包含数据和记录总数的数组。

$planets = db::find("celestial_bodies", "classification = 'planet' ORDER BY title ASC LIMIT 8");

foreach ($planets['data'] as $p){
  echo $p['title'];
  echo $p['classification'];
  // etc, etc
}

echo $planets['total'];  // 8

db::get()db::fetch() 也可以作为 db::find() 的别名,它们的行为完全相同。

原始查询

可以通过发送类似这样的 raw 参数来使用原始SQL查询

$space_objects = db::find("", "SELECT title, classification FROM celestial_bodies WHERE id IS NOT NULL", [
  'raw' => true
]);

db::update($table, $input, $criteria)

清理参数并更新特定记录(多个记录)的数据数组。

db::update("celestial_bodies", [
  'name' => 'Mars',
  'comment' => 'Research "The Phobos Incident" -- we are not alone'
], "name='Marz'");

db::delete($table, $criteria)

清理参数并删除特定记录(多个记录)。

db::delete("celestial_bodies", "name='venice'");

db::create_placeholders($criteria)

创建占位符并清理用于构建查询的数据。此函数用于清理所有函数的参数。

它返回一个包含生成的占位符字符串(where)和一个用于查询的实际数据数组的数组(data)。

如何使用它来准备和执行一个 db::find() 查询的示例

$wd = db::create_placeholders($where);
try {
  $query = "SELECT * FROM $table WHERE " . $wd['where'];
  $a = $GLOBALS['database']->prepare($query);
  $a->execute($wd['data']);
  $a->setFetchMode(PDO::FETCH_ASSOC);
}
catch(PDOException $e) {
  echo $e->getMessage();
}

使用PDO方法

变量 $GLOBALS['database'] 只是一个初始化的PDO对象,因此如果需要,可以使用任何 native PDO methods

例如

$GLOBALS['database']->exec('CREATE TABLE users (
			id INT(255) NOT NULL AUTO_INCREMENT,
			password VARCHAR(255) NULL DEFAULT NULL,
			email VARCHAR(255) NULL DEFAULT NULL,
			PRIMARY KEY (id)
			) ENGINE=InnoDB CHARACTER SET utf8;');
$GLOBALS['database']->query('DESCRIBE users')->fetchAll(PDO::FETCH_ASSOC)