PHPackages                             kea255/dbi - 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. kea255/dbi

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

kea255/dbi
==========

Класс для удобной работы с Mysql

1.1.5(10mo ago)060MITPHPPHP &gt;=7.3

Since Mar 19Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/kea255/DBi)[ Packagist](https://packagist.org/packages/kea255/dbi)[ RSS](/packages/kea255-dbi/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)DependenciesVersions (10)Used By (0)

DBi
===

[](#dbi)

Класс для удобной работы с Mysql небольшая обертка к модулю [mysqli](https://www.php.net/manual/ru/book.mysqli.php)реализующая:

- placeholder-ы
- авто соединение при первом запросе
- удобные выборки в массив

### Установка

[](#установка)

```
composer require kea255/dbi
```

Добавте в конфигурационный файл вашего проекта константы с вашими данными соединения

```
const dbhost = 'localhost';
const dbuser = 'username';
const dbpass = 'password';
const dbname = 'databaseName';
```

Использование placeholder-ов
----------------------------

[](#использование-placeholder-ов)

#### Простые, скалярные данные, плейсхолдер: ?

[](#простые-скалярные-данные-плейсхолдер-)

```
$rows = DBi::select('SELECT * FROM tbl WHERE a=? AND b=? AND c=?', 1, 'test', null);
```

будет выполнен запрос

```
SELECT * FROM tbl WHERE a=1 AND b='test' AND c=NULL
```

#### Массив, плейсхолдер: ?a

[](#массив-плейсхолдер-a)

```
$rows = DBi::select('SELECT * FROM tbl WHERE date IN(?a)', ['2006-03-02', '2012-01-02', '2022-05-01']);
```

будет выполнен запрос

```
SELECT * FROM tbl WHERE date IN('2006-03-02', '2012-01-02', '2022-05-01')
```

#### Ассоциативный массив для запросов типа UPDATE

[](#ассоциативный-массив-для-запросов-типа-update)

```
DBi::query('UPDATE tbl SET ?a', ['id'=>10, 'date'=>"2006-03-02"]);
```

будет выполнен запрос

```
UPDATE tbl SET `id`='10', `date`='2006-03-02'
```

#### Пример для запроса INSERT

[](#пример-для-запроса-insert)

```
$data = ['id' => 101, 'name' => 'Rabbit', 'age' => 30];
DBi::query('INSERT INTO table(?#) VALUES(?a)', array_keys($data), array_values($data));
```

будет выполнен запрос

```
INSERT INTO table(`id`, `name`, `age`) VALUES(101, 'Rabbit', 30)
```

#### Пример для запроса INSERT ON DUPLICATE KEY UPDATE

[](#пример-для-запроса-insert-on-duplicate-key-update)

```
$data = ['id' => 101, 'name' => 'Rabbit', 'age' => 30];
DBi::query('INSERT INTO table(?#) VALUES(?a) ON DUPLICATE KEY UPDATE ?a', array_keys($data), array_values($data), $data);
```

будет выполнен запрос

```
INSERT INTO table(`id`, `name`, `age`) VALUES(101, 'Rabbit', 30) ON DUPLICATE KEY UPDATE `id`='101', `name`='Rabbit', `age`='30'
```

Использование выборок
---------------------

[](#использование-выборок)

Выборка всего результата: select()

```
$rows = DBi::select('SELECT Name, CountryCode FROM City');
foreach($rows as $row){
    printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
```

Выборка строки: selectRow()

```
$row = DBi::selectRow('SELECT Name, CountryCode FROM City LIMIT 1');
printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
```

Выборка столбца: selectCol()

```
$names = DBi::selectCol('SELECT Name FROM City');
foreach($names as $name){
    printf("%s\n", $name);
}
```

Выборка ячейки: selectCell()

```
$name = DBi::selectCell('SELECT Name FROM City WHERE CountryCode=?', 'RU');
printf("%s\n", $name);
```

### Можно использовать временные таблицы

[](#можно-использовать-временные-таблицы)

```
DBi::query('CREATE TEMPORARY TABLE t1 SELECT Name, CountryCode FROM City');
$rows = DBi::select('SELECT * FROM t1');
foreach($rows as $row){
    printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
```

### Экономия памяти для больших выборок

[](#экономия-памяти-для-больших-выборок)

Можно получать результат по одной строке, не загружая всю выборку в память

```
$result = DBi::query('SELECT Name, CountryCode FROM City');
while($row = $result->fetch_assoc()){
	printf("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
$result->free();
```

### Логирование запросов

[](#логирование-запросов)

```
DBi::$query_log_file = __DIR__.'/db_log.txt';
```

### Не останавливать скрипт при ошибках SQL

[](#не-останавливать-скрипт-при-ошибках-sql)

```
DBi::$skip_error = true;
```

### Получить число строк, затронутых INSERT, UPDATE, REPLACE или DELETE запросом.

[](#получить-число-строк-затронутых-insert-update-replace-или-delete-запросом)

```
echo DBi::query_cnt('UPDATE table SET dat=NOW() WHERE id IN(13,17)');
```

### Транзакции

[](#транзакции)

Пример ускорения обновления большого количества строк в цикле

```
$cnt = 0;
$query_in_trans = 10000;
DBi::transaction();
while($reader->read()){
	$cnt++;
	if($cnt % $query_in_trans == 0){
		DBi::commit();
		DBi::transaction();
	}

	DBi::query("UPDATE `table` SET ?a WHERE id=?", $data, $id);
}
DBi::commit();
```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance54

Moderate activity, may be stable

Popularity8

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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 ~104 days

Recently: every ~207 days

Total

9

Last Release

319d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/198f9e651bbff8a7321ffe9f50a31bc0d0356855b301e7b3f5b8fb5b6b0a38d4?d=identicon)[kea255](/maintainers/kea255)

### Embed Badge

![Health badge](/badges/kea255-dbi/health.svg)

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

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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