techwilk/database 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

techwilk/database

最新稳定版本:1.0.1

Composer 安装命令:

composer require techwilk/database

包简介

Simple PDO/MySQLi/SQLite wrapper to make performing SQL queries easier

README 文档

README

A lightweight wrapper around PDO/MySqli/SQLite with a consistent interface and includes helper functions to build and run queries quickly and easily.

For select statements and other complex queries you are expected to write raw paramatarised sql, using the "question mark" syntax.

Installation

  1. Install through composer (composer require techwilk/database)
  2. Create database instance for either PDO / MySqli / SQLite
use TechWilk\Database\MySqli\MySqliDatabase;

$database = new MySqliDatabase(
    'localhost',
    'database-name',
    'username',
    'password',
);

Select

Available functions:

  • query
  • runQuery

Examples

No runtime parameters

$result = $database->query('SELECT * FROM `users`');
$rows = $result->fetchAll();
var_dump($rows);

With runtime parameters

$parameters = [1];
$result = $database->query('SELECT * FROM `users` WHERE id = ?', $parameters);
$row = $result->fetch();
var_dump($row);

Query generated elsewhere in code the codebase

function customQueryBuilder() {
    $parameters = [1];
    $query = new Query(
        'SELECT * FROM `users` WHERE id = ?',
        $parameters,
    );
    return $query;
}

$query = customQueryBuilder();
$result = $database->runQuery($query);
$row = $result->fetch();
var_dump($row);

Insert

Available functions:

  • insert
  • insertOnDuplicate
  • query
  • runQuery

Create new simple record

$data = [
    'id' => 3,
    'name' => 'Tim Jones',
    'auth_id' => 'xxx123yyy',
    'date_created' => '2022-03-03 00:00:00',
];
$id = $database->insert('users', $data);
var_dump($id);

Create but handle potential key clash

$data = [
    'name' => 'admin', // unique key
    'uses_count' => 1,
];
$onDuplicate = [
    'uses_count +' => 1, // += 1
];
$id = $database->insertOnDuplicate('tags', $data, $onDuplicate);
var_dump($id);

Complex cross-table insert

$sql = 'INSERT INTO users (`id`, `name`, `auth_id`, `date_created`) VALUES (?, ?, ?, ?)'
$parameters = [
    3, // id
    'Tim Jones', // name
    'xxx123yyy', // auth_id
    '2022-03-03 00:00:00', // date_created
];
$id = $database->query($sql, $parameters);
var_dump($id);

Update

Available functions:

  • update
  • updateUsingIn
  • updateChanges
  • selectAndUpdate
  • query
  • runQuery
$data = [
    'name' => 'Timothy Jones',
];
$rowCount = $database->update('users', $data, ['id' => 3]);
var_dump($rowCount);

Delete

Available functions:

  • delete
  • deleteUsingIn
  • query
  • runQuery
$rowCount = $database->delete('table', ['id' => 3]);
var_dump($rowCount);

Testing

  • copy phpunit.xml.dist to phpunit.xml
  • fill out the environment details
  • run composer test

Testing environment

  • requires a copy of each database available

MySQL

  • podman network create database-tests

  • 
    
  • podman exec -it database-percona mysql -uroot -p

  • mysql> CREATE DATABASE tests;
  • mysql> `CREATE USER tests@% IDENTIFIED BY 'create-random-password-here';`
  • mysql> `GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON tests.* TO tests@%;`
  • mysql> FLUSH PRIVILEGES;
  • mysql> exit

  • ensure you make a note of which port the db is being exposed on (using podman ps). This is likely a large number, such as 44449

统计信息

  • 总下载量: 40
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-05-17

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固