KO 한국어
버전: v2.3.0

시작하기

Medoo를 시작하는 방법은 아주 간단합니다.

요구사항

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;