Версия: 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
{драйвер}:{ключ}={значение};{ключ}={значение}
$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;