PHP code example of digitalstars / database

1. Go to this page and download the library: Download digitalstars/database 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/ */

    

digitalstars / database example snippets






use DigitalStars\DataBase\DB;

$dsn = ''; // Имя источника данных или DSN, содержащее информацию, необходимую для подключения к базе данных. 
$login = ''; // Логин
$pass = ''; // Пароль
$options = []; // Массив ключ=>значение специфичных для драйвера настроек подключения. 

$db = new DB($dsn, $login, $pass, $options);

use DigitalStars\DataBase\DB;

$db_type = 'mysql'; // Это может быть mysql, sybase или любой другой, в зависимости от вашей СуБД
$db_name = 'test'; // Имя БД
$login = 'root'; // Логин
$pass = 'pass'; // Пароль
$ip = 'localhost'; // Адрес

// С портом по умолчанию
$db = new DB("$db_type:host=$ip;dbname=$db_name", $login, $pass);

// С нестандартным портом
$port = 1234;
$db = new DB("$db_type:host=$ip;port=$port;dbname=$db_name", $login, $pass);

// Подключение с выбором кодировки UTF8
$db = new DB("$db_type:host=$ip;dbname=$db_name;charset=UTF8", $login, $pass);

// Или вот так (советуем использовать этот вариант)
$db = new DB("$db_type:host=$ip;dbname=$db_name;", $login, $pass, [
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// В этом примере, сразу после подключения выполнится SQL запрос "SET NAMES 'utf8'"

use DigitalStars\DataBase\DB;

$db_type = 'sqlite';
$db_path = 'path/to/file/test.sqlite'; // Путь к файлу с базой данных

// Подключение
$db = new DB("$db_type:$db_path");


igitalStars\DataBase\DB;

// Соединение с СУБД SQLite и получение объекта, который включает в себя все методы PHP-PDO и библиотеки
$db = new DB("sqlite:./test.sqlite");

// Получение объекта результата PDOStatement
$result = $db->query("SELECT * FROM users WHERE name = ?s AND age = ?i", ["Василий", 30]);

// Получаем данные (в виде ассоциативного массива)
$data = $result->fetch();

// Не работает запрос? Не проблема - выведите его на печать:
echo $db->getQueryString();

$db->query("SELECT ?i", [123]); 

$db->query("SELECT ?i", '123'); 

$db->query("SELECT ?i", '123.7'); 

$db->setLoggerFunc(function ($query) {
    $file = 'log.txt';
    $query = "Время: ".date('d.m.y H:i:s')."\n".$query;
    file_put_contents($file, $query, FILE_APPEND | LOCK_EX);
});

$_POST['id'] = '123456';
$db->query('SELECT * FROM `users` WHERE `id` = ?i', [$_POST['id']]); 

$db->query('SELECT ?s, ?s, ?s, ?s, ?s', [55.5, true, false, null, 'Д"Артаньян']); 
  
$db->query('SELECT "?S"', '% _'); 

$db->query('SELECT ?n'); 

$db->query('SELECT * FROM ?f', 'table'); 

$db->query('UPDATE test SET ?Ai', [
    ['count' => 30, 'amount' => 1000, 'status' => 66]
]);

$db->query('UPDATE test SET ?A[?i, ?s, ?d]', [
    ['count' => 30.25, 'title' => 'Какой-то заголовок', 'amount' => '66.55']
]);

$db->query('INSERT INTO test (count, amount, status) VALUES (?ai)', [
    [30, 1000, 66]
]);

$db->query('INSERT INTO test (count, title, amount) VALUES (?a[?i, ?s, ?d])', [
    [30.25, 'Какой-то заголовок', '66.55']
]);

$db->query('INSERT INTO test (count, amount, status) VALUES ?vi', [
    [
        [30, 1000, 66],
        [41, 2500, 77],
        [25, 3211, 24]
    ]
]);

$db->query('INSERT INTO test (count, title, amount) VALUES ?v[?i, ?s, ?d]', [
    [
        [30.25, 'Какой-то заголовок', '66.55'],
        [40, 'Какой-то заголовок 2', '77'],
        ['21.55', 'Какой-то заголовок 3', 66.88]
    ]
]);

$db->query('SELECT * FROM test WHERE ?wi', [
    ['count' => 30, 'amount' => 1000, 'status' => 66]
]);

$db->query('SELECT * FROM test WHERE ?w[?i, ?s, ?d]', [
    ['count' => 30.25, 'title' => 'Какой-то заголовок', 'amount' => '66.55']
]);

$db->query("INSERT INTO `users` VALUES (?n, ?s, ?i, ?s)", ['Иоанн Грозный', '54', 'в палатах']);

$user = ['name' => 'Пётр', 'age' => '30', 'adress' => "ООО 'Рога и Копыта'"];
$db->query('INSERT INTO `users` SET ?As', [$user]);

$user = ['name' => "Д'Артаньян", 'age' => '19', 'adress' => 'замок Кастельмор'];
$db->query('INSERT INTO `users` SET ?A[?s, ?i, ?s]', [$user]);

$db->query('SELECT * FROM `users` WHERE `id` = ?i', ['1.00']);
  
$db->query(
    'SELECT id, adress FROM `users` WHERE `name` IN (?a["?s", "?s", "?s"])',
    [['Василий', 'Иван', "Д'Артаньян"]]
); 
  
$db->query(
    'SELECT * FROM ?f WHERE ?f IN (?as) OR `id` IN (?ai)',
    'users', 'users.name', ['Василий'], ['2', 3.000]
);


igitalStars\DataBase\DB;

$db = new DB('sqlite:./test.sqlite');
// Вернёт PDOStatement
$stm = $db->prepare("SELECT * FROM ?f WHERE name = ?s AND count = ?", ['test', 'имя']);

// Вернёт выборку где count = 100
if ($stm->execute([100]))
    print_r($stm->fetchAll());

// Вернёт выборку где count = 200
if ($stm->execute([200]))
    print_r($stm->fetchAll());

$stm = $db->prepare("SELECT * FROM ?f WHERE name = ?s AND count = ?", ['test', 'имя']);

echo $db->getQueryString();

$db->execCommit("DELETE FROM users WHERE id = ?i", [5]);;

$rows = $db->rows("SELECT * FROM users WHERE age = ?i", [30]);
// Вернёт false или все строки таблицы, где age = 30

$row = $db->row("SELECT * FROM users WHERE age = ?i", [30]);
// Вернёт false или строку таблицы, где age = 30

$row = $db->getById('users', 6);
// Выполнит SELECT * FROM `users` WHERE id = 6
// Вернёт false или строку таблицы, где id = 6

$row = $db->getById('users', ['user_id' => 12, 'status' => 5]);
// Выполнит SELECT * FROM `users` WHERE user_id = '12' AND status = '5'
// Вернёт false или строку таблицы, где user_id = 12 или status = 5

$row = $db->count('SELECT * FROM users WHERE name = ?s', ['Василий']);
// Вернёт false или количество строк таблицы users, в которых name = 'Василий'

$last_id = $db->insert('users', ['name' => 'Иван', 'age' => 30]);
// Выполнит запрос: INSERT INTO `users` (`name`, `age`) VALUES ('Иван', '30')
// Вернёт false или ID добавленной записи

$count = $db->update('users', 
    [
        'name' => 'Иван',
        'age' => 30
    ],
    [
        'id' => 6,
        'status' => 9
    ]);
// Выполнит запрос: UPDATE `users` SET `name` = 'Иван', `age` = '30' WHERE `id` = '6' AND `status` = '9'
// Вернёт false или количество затронутых строк

$count = $db->delete('users', ['id' => 6, 'status' => 9], 5);
// Выполнит запрос: DELETE FROM `users` WHERE `id` = '6' AND `status` = '9' LIMIT 5
// Вернёт false или количество затронутых строк

$count = $db->deleteAll('users');
// Выполнит запрос: DELETE FROM `users`
// Вернёт false или количество затронутых строк

$count = $db->deleteById('users', 6);
// Выполнит запрос: DELETE FROM `users` WHERE `id` = 6
// Вернёт false или количество затронутых строк

$count = $db->deleteByIds('users', 'status', [6, 8, 10]);
// Выполнит запрос: DELETE FROM `users` WHERE `status` IN ('6', '8', '10')
// Вернёт false или количество затронутых строк

$count = $db->truncate('users');
// Выполнит запрос: TRUNCATE TABLE `users`
// Вернёт false или количество затронутых строк
sql
SELECT * FROM test WHERE `count` = 30 AND amount = 1000 AND status = 66
sql
SELECT * FROM test WHERE `count` = 30 AND `title` = 'Какой-то заголовок' AND `amount` = 66.55