PHPackages                             hxgf/dbkit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. hxgf/dbkit

ActiveLibrary[Database &amp; ORM](/categories/database)

hxgf/dbkit
==========

PHP functions to handle database connection and CRUD operations with PDO.

1.2.0(3y ago)146[15 issues](https://github.com/jyoungblood/dbkit/issues)2MITPHP

Since May 6Pushed 1y ago1 watchersCompare

[ Source](https://github.com/jyoungblood/dbkit)[ Packagist](https://packagist.org/packages/hxgf/dbkit)[ Docs](https://github.com/hxgf/dbkit)[ RSS](/packages/hxgf-dbkit/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)DependenciesVersions (5)Used By (2)

[![](https://raw.githubusercontent.com/jyoungblood/vphp.dev/refs/heads/master/public/vphp-logo-100.png)](https://vphp.dev)

DB Kit
======

[](#db-kit)

### Vanilla PHP functions to handle database connection and CRUD operations with PDO.

[](#vanilla-php-functions-to-handle-database-connection-and-crud-operations-with-pdo)

Installation
============

[](#installation)

Easy install with composer:

```
composer require jyoungblood/dbkit

```

```
use VPHP\db;
require __DIR__ . '/vendor/autoload.php';
```

Usage
=====

[](#usage)

db::init($settings)
-------------------

[](#dbinitsettings)

Initializes the database connection. The output from this function should be assigned to a global 'database' variable.

```
$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)
--------------------------

[](#dbinserttable-input)

Sanitizes parameters and inserts an array of data into a specific table.
Returns the `id` field of the record created.

```
$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)
-------------------------------------

[](#dbfindtable-criteria-options)

Sanitizes parameters and retrieves a specific record(/s) from a specific table, building a query with `SELECT *`.
Returns an array with the the data and total number of records.

```
$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()` and `db::fetch()` are also available as aliases to `db::find()`, and behave the exact same way.

### Raw Queries

[](#raw-queries)

Raw SQL queries can be used by sending a `raw` parameter like this:

```
$space_objects = db::find("", "SELECT title, classification FROM celestial_bodies WHERE id IS NOT NULL", [
  'raw' => true
]);
```

db::update($table, $input, $criteria)
-------------------------------------

[](#dbupdatetable-input-criteria)

Sanitizes parameters and updates an array of data for a specific record(/s).

```
db::update("celestial_bodies", [
  'name' => 'Mars',
  'comment' => 'Research "The Phobos Incident" -- we are not alone'
], "name='Marz'");
```

db::delete($table, $criteria)
-----------------------------

[](#dbdeletetable-criteria)

Sanitizes parameters and deletes a specific record(/s).

```
db::delete("celestial_bodies", "name='venice'");
```

db::create\_placeholders($criteria)
-----------------------------------

[](#dbcreate_placeholderscriteria)

Creates placeholders and sanitizes data for query building. This function is used to sanitize parameters for all functions.

It returns an array with a string of generated placeholders (`where`), and an array of the actual data to be used in the query (`data`).

An example of how it is used to prepare and execute a `db::find()` query:

```
$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();
}
```

Using PDO methods
=================

[](#using-pdo-methods)

The `$GLOBALS['database']` variable is just an initialized PDO object, so it's possible to use any [native PDO methods](https://www.php.net/manual/en/class.pdo.php) if needed.

For example:

```
$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)
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~85 days

Total

4

Last Release

1208d ago

Major Versions

0.1.0 → 1.0.02022-05-20

### Community

Maintainers

![](https://www.gravatar.com/avatar/f4130bfc70d308f890899a0c223f9888271f0fd3f91879b09558ba696862d8d4?d=identicon)[jyoungblood](/maintainers/jyoungblood)

---

Top Contributors

[![jyoungblood](https://avatars.githubusercontent.com/u/56104?v=4)](https://github.com/jyoungblood "jyoungblood (16 commits)")

---

Tags

abstractiondatabasemysqlpdoutilities

### Embed Badge

![Health badge](/badges/hxgf-dbkit/health.svg)

```
[![Health](https://phpackages.com/badges/hxgf-dbkit/health.svg)](https://phpackages.com/packages/hxgf-dbkit)
```

###  Alternatives

[doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.

9.7k578.4M5.6k](/packages/doctrine-dbal)[ezsql/ezsql

Advance database access library. Make interacting with a database ridiculously easy. An universal interchangeable CRUD system.

86946.7k](/packages/ezsql-ezsql)[jv2222/ezsql

Advance database access library. Make interacting with a database ridiculously easy. An universal interchangeable CRUD system.

87311.3k2](/packages/jv2222-ezsql)[lincanbin/php-pdo-mysql-class

A PHP MySQL PDO class similar to the Python MySQLdb, which supports iterator and parameter binding when using 'WHERE IN' statement.

2386.4k](/packages/lincanbin-php-pdo-mysql-class)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
