UK Українська
Версія: v2.3.0

Початок роботи

Почати роботу з Medoo легко.

Вимоги

Список розширень PDO для PHP

У наведеному нижче списку показано, яке PDO розширення потрібно встановити залежно від типу вашої бази даних і платформи.
Ім'я Драйвер
MySQL, MariaDB php_pdo_mysql
MSSQL php_pdo_sqlsrv / php_pdo_dblib
Oracle php_pdo_oci
SQLite php_pdo_sqlite
PostgreSQL php_pdo_pgsql
Sybase php_pdo_dblib

Встановлення драйвера PDO

Medoo вимагає PHP з підтримкою PDO. Якщо PDO ще не встановлено, виконайте наведені нижче дії.
// Відредагуйте php.ini та приберіть початкову крапку з комою в розширенні бази даних, яке потрібно ввімкнути.

// .dll використовується у Windows, а .so — у Linux/UNIX.

// До
;extension=php_pdo_mysql.dll
;extension=php_pdo_mysql.so

// Після
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Збережіть файл, а потім перезапустіть PHP або Apache/Nginx.

// Якщо PDO встановлено правильно, він з'явиться у phpinfo().
Або скористайтеся терміналом. Розширення PDO буде ввімкнено та налаштовано автоматично.
$ sudo apt-get install php7.4-mysql

Встановлення через Composer

Якщо ви використовуєте Composer, установіть Medoo за допомогою наступної команди.
$ composer require catfan/medoo
Composer встановлює залежність автоматично. Запустіть composer update, лише якщо вам потрібно оновити залежності вручну.
$ composer update

Ручне встановлення

Проста альтернатива — завантажити medoo.php, розмістити його у своєму проєкті та підключити через require.
require 'Medoo.php';

Налаштування з’єднання

Передайте масив налаштувань, щоб ініціалізувати Medoo і встановити з’єднання з базою даних.
// Завантажте автозавантажувач Composer.
require 'vendor/autoload.php';

// Імпортуйте простір імен Medoo.
use Medoo\Medoo;

$database = new Medoo([
	// Обов'язково.
	'type' => 'mysql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Необов'язково.
	'charset' => 'utf8mb4',
	'collation' => 'utf8mb4_general_ci',
	'port' => 3306,

	// Необов'язково: префікс таблиць. Усі назви таблиць набудуть вигляду PREFIX_table.
	'prefix' => 'PREFIX_',

	// Необов'язково: увімкнути логування. За замовчуванням вимкнено для кращої продуктивності.
	'logging' => true,

	// Необов'язково.
	// Режим обробки помилок.
	// Визначає, як PDO повідомляє про помилки.
	// PDO::ERRMODE_SILENT (за замовчуванням) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Довідка: https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Необов'язково.
	// Параметри драйвера для підключення.
	// Довідка: https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Необов'язково: команди, які будуть виконані після встановлення підключення до бази даних.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Спеціальне підключення DSN

Ви також можете вказати власний DSN для підключення до баз даних, які Medoo типово не підтримує, або щоб передати додаткові параметри DSN.
Формат рядка підключення DSN
{driver}:{key}={value};{key}={value}
$database = new Medoo([
	'dsn' => [
		// Назва драйвера PDO, що використовується в DSN.
		'driver' => 'mydb',
		// Параметри DSN у вигляді пар ключ-значення.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Необов'язково: підказує Medoo, яку поведінку, специфічну для певної СУБД, використовувати.
	'type' => 'mysql',

	'username' => 'your_username',
	'password' => 'your_password'
]);

// Підсумковий згенерований рядок DSN:
mydb:server=12.23.34.45;port=8886

Ініціалізація з об'єкта PDO

Ви також можете створити Medoo з існуючого ініціалізованого об’єкта PDO.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Повторно використайте вже ініціалізований і підключений екземпляр PDO.
	'pdo' => $pdo,

	// Необов'язково: підказує Medoo, яку поведінку, специфічну для певної СУБД, використовувати.
	'type' => 'mysql'
]);

Для MySQL

Ця опція доступна лише для MySQL.
$database = new Medoo([
	// Необов'язково: сокет MySQL. Не використовуйте його одночасно з server і port.
	'socket' => '/tmp/mysql.sock',
]);

Для MariaDB

MariaDB обробляється так само, як MySQL. Тип бази даних автоматично відображається на mysql.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Для MSSQL

Сучасні підключення MSSQL зазвичай використовують розширення pdo_sqlsrv у Windows і Linux/UNIX. Medoo за умовчанням використовує драйвер pdo_sqlsrv. Для застарілих середовищ, які потребують pdo_dblib, установіть драйвер явно під час ініціалізації. Перегляньте https://github.com/Microsoft/msphpsql для отримання додаткової інформації.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Необов'язково: назва застосунку.
	'appname' => 'test',

	// Необов'язково.
	// Примусово використовувати драйвер dblib для MSSQL.
	// За замовчуванням: sqlsrv.
	'driver' => 'dblib'
]);
Medoo також підтримує параметри підключення MSSQL під час використання драйвера sqlsrv. Дивіться подробиці на https://docs.microsoft.com/en-us/sql/connect/php/connection-options?view=sql-server-2017.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Необов'язково: параметри підключення MSSQL.
	'application_intent' => 'ReadOnly',
	'attach_db_file_name' => './database.sql',
	'authentication' => 'SqlPassword',
	'column_encryption' => 'Enabled',
	'connection_pooling' => 1,
	'encrypt' => 1,
	'failover_partner' => 'MultiSubnetFailover',
	'key_store_authentication' => 'KeyVaultPassword',
	'key_store_principal_id' => 'AzureName',
	'key_store_secret' => 'AzurePass',
	'login_timeout' => '20',
	'multiple_active_result_sets' => 1,
	'multi_subnet_failover' => 'Yes',
	'scrollable' => 'buffered',
	'trace_file' => './path',
	'trace_on' => 1,
	'transaction_isolation' => PDO::SQLSRV_TXN_SNAPSHOT,
	'transparent_network_ip_resolution' => 'Enabled',
	'trust_server_certificate' => 1,
	'wsid' => 'Computer1'
]);

Для SQLite

Файлова база даних
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
База даних пам'яті
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Тимчасова база даних
Тимчасова база даних видаляється, коли з’єднання розривається.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Або взагалі не вказуйте параметр database.
$database = new Medoo([
	'type' => 'sqlite'
]);

Рядок DSN налагодження

Ви можете переглянути остаточний рядок DSN, зателефонувавши за номером info().
$database = new Medoo([
	'type' => 'mysql',
	'host' => '127.0.0.1',
	'database' => 'test',
	'username' => 'your_username',
	'password' => 'your_password',
]);

echo $database->info()['dsn'];

// mysql:dbname=test;host=127.0.0.1

Тестовий режим

Цей режим корисний для тестів. Ви можете перевірити згенеровані SQL до $database->queryString у різних типах баз даних. Запити генеруються, але не виконуються.
$database = new Medoo([
	'testMode' => true
]);

// Вкажіть тип бази даних.
$database->type = 'mysql';

$database->select("account", ["user_name"], ["user_id[>]" => 10]);

echo $database->queryString;