Версія: v2.3.0
Початок роботи
Почати роботу з Medoo легко.
Вимоги
- PHP 7.3+ із встановленим розширенням PDO.
- База даних SQL, наприклад MySQL, MSSQL, SQLite, або інша підтримувана система.
- Переконайтеся, що відповідний драйвер PDO встановлено та ввімкнено.
- Базові знання SQL.
Список розширень 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;