atk14 / dbmole
Atk14框架的数据库层库
v1.1.6
2023-04-11 13:50 UTC
Requires
- php: >=5.3.0
- atk14/files: >1.3
- atk14/sendmail: 1.*
Requires (Dev)
- atk14/files: >1.3
- atk14/stop-watch: 0.*
- atk14/tester: *
This package is auto-updated.
Last update: 2024-08-31 00:33:18 UTC
README
DbMole提供了与数据库(Postgresql、MySQL或Oracle)的基本功能。
基本用法
首先,定义全局函数dbmole_connection,该函数返回到数据库的连接。
本例中仅考虑一个Postgresql数据库。
function dbmole_connection($dbmole){
return pg_connect("dbname=testing_database host=localhost user=test password=test123");
}
实例化
$dbmole = PgMole::GetInstance();
选择行
$rows = $dbmole->selectRows("SELECT id,title,author FROM books");
foreach($rows as $row){
echo $row["id"].": ".$row["title"]." (".$row["author"].")<br>";
}
选择单行
$row = $dbmole->selectRow("SELECT id,title,author FROM books WHERE id=123");
var_dump($row); // ["id" => "123", "title" => "Book Title", "author" => "John Doe"]
选择单值
$amount_of_books = $dbmole->selectSingleValue("SELECT COUNT(*) FROM books");
// or better
$amount_of_books = $dbmole->selectInt("SELECT COUNT(*) FROM books");
对于选择单值,还有一些方法
- selectValue()
- selectInt()
- selectFloat()
- selectBool()
- selectString()
查询变量的安全绑定
$rows = $dbmole->selectRows("SELECT id,title,author FROM books WHERE UPPER(title) LIKE UPPER(:search)",[":search" => "%Goodies%"]);
$row = $dbmole->selectRow("SELECT id,title,author FROM books WHERE id=:id",[":id" => 123]);
$dbmole->doQuery("UPDATE books SET title=:title, author=:author WHERE id=:id",[":id" => 123,":title" => "Good Reading", ":author" => "Samantha Doe"]);
限制行数
$rows = $dbmole->selectRows("SELECT * FROM employees",[],["limit" => "10", "offset" => 0]);
$rows = $dbmole->selectRows("SELECT * FROM employees WHERE created_at>=:date",[":date" => "2020-01-01"],["limit" => "10", "offset" => 0]);
在事务中工作
$dbmole->begin();
// do something with $dbmole
$dbmole->commit();
在事务中工作,避免不必要的数据库连接
$dbmole->begin(["execute_after_connecting" => true]);
// do something with $dbmole and sometimes do nothig
if($dbmole->isConnected()){
$dbmole->commit();
}
向表中插入新记录
$dbmole->insertIntoTable("books",[
"id" => 123,
"title" => "Nice Reading",
"author" => "Brody Doe"
]);
序列
$next_id = $dbmole->selectSequenceNextval("seq_book");
$curr_id = $dbmole->selectSequenceCurrval("seq_book");
错误回调
当SQL级别发生错误时,DbMole将调用指定的回调。
DbMole::RegisterErrorHandler("dbmole_error_handler");
function dbmole_error_handler($dbmole){
echo "Dear visitor, unfortunately an error has occurred";
$dbmole->sendErrorReportToEmail("admin@example.com");
$dbmole->logErrorReport();
exit(1);
}
安装
只需使用Composer
composer require atk14/dbmole
测试
安装开发所需的依赖项
composer update --dev
运行测试
cd test
../vendor/bin/run_unit_tests
许可证
DbMole是免费软件,根据MIT许可证条款分发[1]