1. Go to this page and download the library: Download andrey-tech/database-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
andrey-tech / database-php example snippets
$config = [
'driver' => 'mysql', // Имя драйвера PDO
'host' => 'localhost', // Имя или IP хоста
'port' => 3306, // Порт
'database' => 'db', // Имя БД
'charset' => 'utf8mb4', // Кодировка
'user' => '', // Имя пользователя
'password' => '' // Пароль пользователя
];
$options = [
PDO::ATTR_TIMEOUT => 60,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
use App\Database\{MySQLDatabase, DatabaseException};
try {
$config = [
'host' => 'localhost',
'user' => 'test',
'password' => 'pass',
'database' => 'mydb'
];
$db = MySQLDatabase::instance($config);
// Включаем отладочный режим с выводом в STDOUT
$db->debug = true;
// Запрос к таблице contacts без параметров
$stmt = $db->doStatement("
SELECT COUNT(*) AS `count`
FROM `contacts`
");
print_r($stmt->fetchAll());
// Запрос к таблице contacts с использованием именованных параметров
$stmt = $db->doStatement("
SELECT *
FROM `contacts`
WHERE `status` = :status
LIMIT 10
", [ 'status' => 1 ]);
print_r($stmt->fetchAll());
// Запрос к таблице contacts с использованием НЕ именованных параметров
$stmt = $db->doStatement("
SELECT *
FROM `contacts`
WHERE `status` = ?
", [ 1 ], $isNamed = false);
// Выбираем все записи с помощью генератора
$generator = $db->fetchAll($stmt);
foreach ($generator as $row) {
print_r($row);
}
} catch (DatabaseException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
use App\Database\{MySQLDatabase, DatabaseException};
class MyDatabase extends MySQLDatabase
{
/**
* Выполняет соединение с CУБД
* @return void
*/
public function connect()
{
parent::connect();
$this->tune();
}
/**
* Выполняет дополнительную настройку после соединения с СУБД
* @return void
*/
public function tune()
{
// Устанавливаем таймаут неактивности соединения с СУБД
$this->doStatement("SET SESSION wait_timeout = {$this->config['wait_timeout']}");
// Устанавливаем уровень изолированности транзакций
$this->doStatement('SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED');
}
/**
* Извлекает клиентов с заданным статусом
* @param int $status ID статуса
* @return Generator
*/
public function selectContactsByStatus(int $status) :Generator
{
$stmt = $this->doStatement("
SELECT *
FROM `contacts`
WHERE `status` = :status
FOR UPDATE
", [ 'status' => $status ]);
return $this->fetchAll($stmt);
}
}
try {
$config = [
'host' => 'localhost',
'user' => 'test',
'password' => 'pass',
'database' => 'mydb'
];
$db = MyDatabase::instance($config);
// Включаем отладочный режим с выводом в STDOUT
$db->debug = true;
// Выбираем все записи с помощью генератора
$generator = $db->selectContactsByStatus($status = 1);
foreach ($generator as $row) {
print_r($row);
}
} catch (DatabaseException $e) {
printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}