jyoungblood / dbkit
使用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)