atk14/dbmole

Atk14框架的数据库层库

v1.1.6 2023-04-11 13:50 UTC

This package is auto-updated.

Last update: 2024-08-31 00:33:18 UTC


README

Build Status

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]