PHP code example of programulin / database

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

    

programulin / database example snippets


$db->select('SELECT * FROM :name WHERE :name > :i', ['products', 'price', 5000]);

$params = [
    'name' => 'Товар',
    'price' => 1000
];

$db->update('UPDATE `products` :set WHERE `id` = :i', [$params, 10]);

use Programulin\Database\Manager;

// Для одного соединения:
Manager::config([
	'name'     => 'db1',
	'default'  => true,
	'login'    => 'root',
	'password' => '',
	'database' => 'db1',
	'host'     => 'localhost',
	'charset'  => 'UTF8', // Необязательно, по-умолчанию UTF8
	'timeout'  => 600 // Необязательно, изменяет параметр wait_timeout
]);

// Для нескольких соединений:
$config[] = [
	'name'     => 'db1',
	'default'  => true,
	'login'    => 'root',
	'password' => '',
	'database' => 'db1',
	'host'     => 'localhost',
	'timeout'  => 600
];

$config[] = [
	'name'     => 'db2',
	'login'    => 'root',
	'password' => '',
	'database' => 'db2',
	'host'     => 'localhost'
];

Manager::configs($config);

Manager::factory(function($class){
	return new $class();
});

// Если не указать название, будет выбрано соединение по-умолчанию.
$db = Manager::conn('db1');

$db->query('DELETE FROM `product`');

$db->query('UPDATE `product` SET `price` = :i WHERE `product_id` = :i', [150, 5]);

$db->query('UPDATE `product` SET `name` = :s, `price` = :d WHERE `product_id` = :i', ['Новое название', 5.5, 10]);

$db->query('INSERT INTO :name (:names) VALUES (:s, :i) ', ['product', ['name', 'price'], 'Товар1', 1000]);

$columns = ['database.table.column1', 'database.table.column2'];
$table = 'database.table';
$db->query('SELECT :names FROM :name', [$columns, $table]);

$product = [
	'name' => 'Телефон',
	'price' => 1500,
	'status' => false
];
  
$db->query('INSERT INTO `product` :set', [$product]);

$db->query('UPDATE `product` :set WHERE `product_id` = :i', [$product, 5]);

$where = [
	['status', '>=', 1],
	['price', 'between', [500, 1000]]
];

if(!empty($_POST['keyword']))	
	$where[] = ['name', 'like', "%{$_POST['keyword']}%"];

$db->query('SELECT * FROM `product` :where', [$where]);

$search = [];

$res1 = $db->query('SELECT * FROM `product`');
$res2 = $db->query('SELECT * FROM `product` :where', [$search]);

$values = ['Товар1', 'Товар2', 'Товар3'];

$db->query('SELECT * FROM `product` WHERE `name` :in', [$values]);

$values = [];

$res1 = $db->query('SELECT * FROM `product`');
$res2 = $db->query('SELECT * FROM `product` WHERE `name` :in', [$values]);

$db->query('SELECT * FROM `product` :limit', [1]);
$db->query('SELECT * FROM `product` :limit', [[2,2]]);
$db->query('SELECT * FROM `product` LIMIT :i,:i', [2,2]);

$db->query('SELECT * FROM `product`');
$db->query('SELECT * FROM `product` :limit', [0]);
$db->query('SELECT * FROM `product` :limit', [[0,0]]);

$products = $db->select('SELECT * FROM `product`');

$product = $db->selectRow('SELECT * FROM `product` WHERE `product_id` = :i', [15]);

$max = $db->selectOne('SELECT MAX(`price`) FROM `product`');
$count = $db->selectOne('SELECT COUNT(*) FROM `product`');

$db->selectKeyPair('SELECT `product_id`, `name` FROM `product`');

$db->selectGroup('SELECT `status`, `name`, `price` FROM `product`');

$db->selectColumn('SELECT `name` FROM `product`');

$stmt = $db->query('SELECT * FROM `products`');

$count = $db->update('UPDATE `product` SET `status` = 1');

$count = $db->delete('DELETE FROM `product`');

$pdo = $db->pdo();

$id = $db->lastInsertId();

$db->connect();

$db->close();

use Programulin\Database\Record;

class Product extends Record
{
    public static function conn()
    {
        return 'db2';
    }

    public static function table()
    {
        return 'product';
    }

    public static function key()
    {
        return 'product_id';
    }
}

// Получение одной записи по id.
$product = Product::findById(10);

// Получение по SQL-запросу. Начало вида 'SELECT * FROM `table`' писать не нужно.
$product = Product::findOne('WHERE `price` > :i LIMIT 1', [1000]);

// Получение всех записей.
$products = Product::find();

// Получение записей по характеристикам.
$where = [
	['price', 'between', [500, 1000]],
	['status', '=', 1]
];

$products = Product::find(':where LIMIT 10', [$where]);

// Получение записей по SQL-запросу.
$products = Product::findBySql('SELECT * FROM `product` LIMIT 50');

// Получение количества записей.
$count_all = Product::count();
$count_active = Product::count('WHERE `status` = 1');

// Создание записи
$product = Product::create();

// Изменение параметров
$product->name = 'Название';
$product->price = 1000;

// Сохранение
$product->save();

// Получение актуальной информации из БД по идентификатору:
$product->id = 10;
$product->refresh();

// Удаление
$product->delete();

// Удаление множества записей:
Product::findAndDelete('WHERE `price` < :i', [1000]);

$product = Product::findById(15);

// Получение идентификатора записи
$id = $product->id();

$params = [
	'name' => 'Новое название'
	'price' => 1000,
	'status' => 1
];

// Импорт всех параметров
$product->import($params);

// Импорт только указанных параметров
$product->import($params, ['name', 'price']);

// Импорт всех параметров, кроме указанных
$product->import($params, ['status'], true);

// Создание записи и импорт параметров
$product = Product::create(['name' => 'Название']);
$product = Product::create(['name' => 'Название'], ['name'], true);

// Экспорт всех параметров
$options = $product->export();

// Экспорт только указанных параметров
$options = $product->export(['name', 'price']);

// Экспорт всех параметров, кроме указанных
$options = $product->export(['status'], true);

// Проверка существования параметра
if(!$product->has('price'))
    $product->price = 50;
	
// Проверка параметра на пустоту
if($product->empty('price'))
    $product->price = 50;	

use Programulin\Database\Record;

class Product extends Record
{
    private $saves;

    protected function beforeSave()
    {
        if(!$this->has('price'))
            throw new \Exception('Отсутствует цена!');
	}

    protected function afterSave()
    {
        $this->saves++;
    }

    protected function beforeDelete()
    {
        if($this->has('price') and $this->price == 1)
            throw new \Exception('Нельзя удалять включённые товары.');
    }
}