버전: v2.3.0
시작하기
Medoo를 시작하는 방법은 아주 간단합니다.
요구사항
- PHP 7.3+(PDO 확장이 설치됨)
- MySQL, MSSQL, SQLite 등 지원되는 SQL 데이터베이스
- 해당 PDO 드라이버가 설치되어 활성화되어 있는지 확인하세요.
- 기본 SQL 지식.
PHP PDO 확장 목록
다음 목록은 데이터베이스 종류와 플랫폼에 따라 설치해야 하는 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 |
PHP PDO 드라이버 설치
Medoo를 사용하려면 PDO 지원이 포함된 PHP가 필요합니다. 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 연결
Medoo가 기본적으로 지원하지 않는 데이터베이스에 연결하거나 추가 DSN 매개변수를 전달해야 한다면 사용자 정의 DSN을 지정할 수도 있습니다.
DSN 연결 문자열 형식
{드라이버}:{키}={값};{키}={값}
$database = new Medoo([ 'dsn' => [ // DSN에 사용할 PDO 드라이버 이름입니다. '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 인스턴스로 초기화
이미 생성된 PDO 인스턴스로 Medoo를 초기화할 수도 있습니다.
$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 연결은 일반적으로 Windows와 Linux/UNIX 모두에서 pdo_sqlsrv 확장을 사용합니다. 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', // 선택 사항. // MSSQL에서 dblib 드라이버를 강제로 사용합니다. // 기본값: sqlsrv. 'driver' => 'dblib' ]);
Medoo는 sqlsrv 드라이버를 사용할 때 MSSQL 연결 옵션도 지원합니다. 자세한 내용은 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 문자열 디버그
info()을 호출하여 최종 DSN 문자열을 검사할 수 있습니다.$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;