power / db
用于处理 mysql 数据库的简单静态类
2.9
2024-05-06 14:16 UTC
Requires
- php: >=7.0.0
- ext-mysqli: *
README
用于处理 MySql 数据库的简单静态/非静态类
- PHP 版本 7.0+
- Composer:
composer require power/db - 此代码基于 https://github.com/colshrapnel/safemysql
两种使用方式:静态和非静态
两种类类型都包含所有方法
use \Power\DB; // Non-static $db = new \Power\mDB('localhost', 'users', 'passwd', 'dbname', 'utf8mb4'); // Select all records from users table $data = $db->getAll('SELECT * FROM ?n', 'users'); // Static DB::Init('localhost', 'users', 'passwd', 'dbname', 'utf8mb4'); // Select all records from users table $data = DB::getAll('SELECT * FROM ?n', 'users');
与单个数据库交互
use \Power\DB; DB::Init('localhost', 'users', 'passwd', 'dbname', 'utf8mb4'); // Get one row with some id $id = 5; DB::getRow('SELECT * FROM `users` WHERE `id`=?i', $id); // Get all rows $login = 'tester'; DB::getAll('SELECT * FROM `logs` WHERE `login`=?s', $login); // Get one value DB::getOne('SELECT count(*) FROM `users`'); // Insert some data $table_name = 'logs'; $data = [ 'create_date' => DB::pure('now()'), // when you don't need to escape value - use DB::pure method 'login' => 'tester', 'userid' => 5 ]; DB::query('INSERT INTO ?n SET ?u', $table_name, $data); // or user insert method DB::insert($table_name, $data); // Get inserted id from last query echo DB::insertId(); // Update records DB::update($table_name, $data)
从静态类与多个数据库交互
use \Power\DB; $db1 = DB::Init('localhost', 'users', 'passwd', 'dbname', 'utf8mb4'); $db2 = DB::Init('localhost', 'users1', 'passwd1', 'dbname1', 'utf8mb4'); // Turn on saving statistics DB::SetSaveStats(true); // After initializing, first DB is selected for work // Get associated array with id field as key DB::getIndCol('id', 'SELECT `id`,`name` FROM `users`'); // Switching to second database DB::Switch($db2); // Get all the rows into indexed array DB::getInd('id', 'SELECT * FROM `users`'); // Get queries statistics print_r(DB::getStats());
使用占位符
?n - table or field name
?s - string
?i - number
?a - array for IN, example IN (?a)
?u - array for SET
?p - insert prepared sql without escaping
自定义错误处理器
use \Power\DB; function ErrorHandler($message) { die($message); } DB::SetErrorHandler('ErrorHandler');
将错误和查询日志保存到文件
use \Power\DB; DB::Init('localhost', 'user', 'passwd', 'dbname', 'utf8mb4'); DB::SetErrorLog(__DIR__.'/mysql_error.log'); DB::SetLogSql(__DIR__.'/mysql_sql.log', false);
使用 DBCacheQuery 类通过更少的查询插入大量记录
// Create class and point table name and col names for inserting records $cache_items = new \DBCacheQuery('item_list', ['id', 'name', 'icon', 'list', 'data_type']); foreach ($some_data as $data) { // Use Add method for each new row // Make sure, that param array has the same data order as you make in class creation $cache_items->Add( [ $data['id'], $data['name'], $data['icon'], $data['list'], $data['type'] ]); } // Then use Flush method to send the remaining data from the cache $cache_items->Flush(); // That's all