MySQL Functions (PDO_MYSQL)
소개
PDO_MYSQL은 PHP에서 MySQL 데이터베이스로의 액세스를 가능하게 하는 PHP 데이터 개체(PDO) 인터페이스를 구현하는 드라이버입니다.
PDO_MYSQL은 기본적으로 에뮬레이트된 준비를 사용합니다.
MySQL 8
7.1.16 이전의 PHP 버전 또는 7.2.4 이전의 PHP 7.2를 실행할 때 MySQL 8 서버의 기본 비밀번호 플러그인을 mysql_native_password로 설정하십시오. 그렇지 않으면 caching_sha2_password를 사용하지 않는 경우에도 [caching_sha2_password] 클라이언트가 알 수 없는 서버 요청 인증 메서드와 유사한 오류가 표시됩니다.
이는 MySQL 8이 기본적으로 이전 PHP(mysqlnd) 릴리스에서 인식되지 않는 플러그인인 caching_sha2_password를 사용하기 때문입니다. 대신 my.cnf에서 default_authentication_plugin=mysql_native_password
를 설정하여 변경하십시오. caching_sha2_password 플러그인은 향후 PHP 릴리스에서 지원될 예정입니다. 그동안 mysql_xdevapi 확장은 이를 지원합니다.
경고 주의: 일부 MySQL 테이블 유형(스토리지 엔진)은 트랜잭션을 지원하지 않습니다. 트랜잭션을 지원하지 않는 테이블 유형을 사용하여 트랜잭션 데이터베이스 코드를 작성할 때 MySQL은 트랜잭션이 성공적으로 시작된 것처럼 가장합니다. 또한 발행된 모든 DDL 쿼리는 보류 중인 트랜잭션을 암시적으로 커밋합니다.
메모: MySQL 드라이버는 PDOStatement::bindParam()을 통해 PDO::PARAM_INPUT_OUTPUT
을 제대로 지원하지 않습니다. 이러한 매개변수를 사용할 수 있지만 업데이트되지 않습니다(즉, 실제 출력은 무시됨).
설치
일반적인 Unix 배포판에는 설치할 수 있는 PHP의 바이너리 버전이 포함됩니다. 이러한 바이너리 버전은 일반적으로 MySQL 확장을 지원하도록 구축되지만 확장 라이브러리 자체는 추가 패키지를 사용하여 설치해야 할 수도 있습니다. 가용성을 위해 선택한 배포판과 함께 제공되는 패키지 관리자를 확인하십시오.
예를 들어 Ubuntu에서 php5-mysql
패키지는 ext/mysql, ext/mysqli 및 PDO_MYSQL PHP 확장을 설치합니다. CentOS에서 php-mysql
패키지는 이 세 가지 PHP 확장도 설치합니다.
또는 이 확장을 직접 컴파일할 수 있습니다. 소스에서 PHP를 빌드하면 사용하려는 MySQL 확장과 각 확장에 대한 클라이언트 라이브러리 선택을 지정할 수 있습니다.
컴파일할 때 --with-pdo-mysql[=DIR]을 사용하여 PDO MySQL 확장을 설치합니다. 여기서 선택적 [=DIR]
은 MySQL 기본 라이브러리입니다. Mysqlnd는 기본 라이브러리입니다. 라이브러리 선택에 대한 자세한 내용은 Choosing a MySQL library을 참조하십시오.
선택적으로 --with-mysql-sock[=DIR]은 PDO_MYSQL을 포함한 모든 MySQL 확장에 대한 MySQL 유닉스 소켓 포인터의 위치를 설정합니다. 지정하지 않으면 기본 위치가 검색됩니다.
선택적으로 --with-zlib-dir[=DIR]은 libz 설치 접두사에 대한 경로를 설정하는 데 사용됩니다.
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
SSL 지원은 적절한 PDO_MySQL constants를 사용하여 활성화되며, 이는 » MySQL C API function mysql_ssl_set()을 호출하는 것과 동일합니다. 또한 연결이 이미 존재하기 때문에 SSL은 PDO::setAttribute로 활성화할 수 없습니다. » connecting to MySQL with SSL에 대한 MySQL 문서도 참조하세요.
미리 정의된 상수
아래 상수는 이 드라이버에 의해 정의되며 확장이 PHP로 컴파일되거나 런타임에 동적으로 로드된 경우에만 사용할 수 있습니다. 또한 이러한 드라이버별 상수는 이 드라이버를 사용하는 경우에만 사용해야 합니다. 다른 드라이버와 함께 드라이버별 속성을 사용하면 예기치 않은 동작이 발생할 수 있습니다. 코드가 여러 드라이버에 대해 실행될 수 있는 경우 PDO::getAttribute()를 사용하여 드라이버를 확인하기 위해 PDO::ATTR_DRIVER_NAME
속성을 얻을 수 있습니다.
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
(int)- 이 속성이 PDOStatement에서
true
로 설정되면 MySQL 드라이버는 버퍼링된 버전의 MySQL API를 사용합니다. 이식 가능한 코드를 작성하는 경우 대신 PDOStatement::fetchAll()을 사용해야 합니다.예제 #1 mysql에서 쿼리를 버퍼링하도록 강제하기
<?php if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') { $stmt = $db->prepare('select * from foo', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); } else { die("my application only works with mysql; I should use \$stmt->fetchAll() instead"); } ?>
PDO::MYSQL_ATTR_LOCAL_INFILE
(int)LOAD LOCAL INFILE
을 활성화합니다.이 상수는 새 데이터베이스 핸들을 구성할 때
driver_options
배열에서만 사용할 수 있습니다.PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
(string)- 이 지정된 디렉토리에 있는 파일로 LOCAL DATA 로드를 제한할 수 있습니다.
이 상수는 새 데이터베이스 핸들을 구성할 때
driver_options
배열에서만 사용할 수 있습니다. PDO::MYSQL_ATTR_INIT_COMMAND
(string)- MySQL 서버에 연결할 때 실행할 명령입니다. 재접속 시 자동으로 재실행됩니다.
이 상수는 새 데이터베이스 핸들을 구성할 때
driver_options
배열에서만 사용할 수 있습니다. PDO::MYSQL_ATTR_READ_DEFAULT_FILE
(int)- my.cnf 대신 명명된 옵션 파일에서 옵션을 읽습니다. mysqlnd는 mysql 구성 파일을 읽지 않기 때문에 mysqlnd가 사용되는 경우 이 옵션을 사용할 수 없습니다.
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP
(int)- my.cnf 또는
MYSQL_READ_DEFAULT_FILE
로 지정된 파일의 명명된 그룹에서 옵션을 읽습니다. mysqlnd는 mysql 구성 파일을 읽지 않기 때문에 mysqlnd가 사용되는 경우 이 옵션을 사용할 수 없습니다. PDO::MYSQL_ATTR_MAX_BUFFER_SIZE
(int)- 최대 버퍼 크기. 기본값은 1MiB입니다. 이 상수는 mysqlnd에 대해 컴파일될 때 지원되지 않습니다.
PDO::MYSQL_ATTR_DIRECT_QUERY
(int)- 직접 쿼리를 수행하고 준비된 명령문을 사용하지 마십시오.
PDO::MYSQL_ATTR_FOUND_ROWS
(int)- 변경된 행의 수가 아니라 발견된(일치하는) 행의 수를 반환합니다.
PDO::MYSQL_ATTR_IGNORE_SPACE
(int)- 함수 이름 뒤에 공백을 허용하십시오. 모든 함수의 이름을 예약어로 만듭니다.
PDO::MYSQL_ATTR_COMPRESS
(int)- 네트워크 통신 압축을 활성화합니다.
PDO::MYSQL_ATTR_SSL_CA
(int)- SSL 인증 기관에 대한 파일 경로입니다.
PDO::MYSQL_ATTR_SSL_CAPATH
(int)- PEM 형식으로 저장된 신뢰할 수 있는 SSL CA 인증서가 포함된 디렉터리의 파일 경로입니다.
PDO::MYSQL_ATTR_SSL_CERT
(int)- SSL 인증서에 대한 파일 경로입니다.
PDO::MYSQL_ATTR_SSL_CIPHER
(int)- OpenSSL에서 이해할 수 있는 형식으로 SSL 암호화에 사용할 수 있는 하나 이상의 암호 목록입니다. 예:
DHE-RSA-AES256-SHA:AES128-SHA
PDO::MYSQL_ATTR_SSL_KEY
(int)- SSL 키에 대한 파일 경로입니다.
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
(int)- 서버 SSL 인증서 확인을 비활성화하는 방법을 제공합니다.
이것은 PHP 7.0.18 및 PHP 7.1.4부터 존재합니다.
PDO::MYSQL_ATTR_MULTI_STATEMENTS
(int)false
로 설정하면 PDO::prepare() 및 PDO::query() 모두에서 다중 쿼리 실행을 비활성화합니다.이 상수는 새 데이터베이스 핸들을 구성할 때
driver_options
배열에서만 사용할 수 있습니다.
런타임 구성
이러한 기능의 동작은 php.ini의 설정에 영향을 받습니다.
PDO_MYSQL 구성 옵션
Name | Default | Changeable |
---|---|---|
pdo_mysql.default_socket | "/tmp/mysql.sock" | PHP_INI_SYSTEM |
pdo_mysql.debug | NULL | PHP_INI_SYSTEM |
PHP_INI_* 모드에 대한 자세한 내용과 정의는 구성 설정을 설정할 수 있는 위치를 참조하세요.
다음은 구성 지시문에 대한 간단한 설명입니다.
pdo_mysql.default_socket
string- Unix 도메인 소켓을 설정합니다. 이 값은 구성 시 도메인 소켓이 발견되면 컴파일 시 설정할 수 있습니다. 이 ini 설정은 Unix 전용입니다.
pdo_mysql.debug
bool- PDO_MYSQL에 대한 디버깅을 활성화합니다. 이 설정은 PDO_MYSQL이 mysqlnd에 대해 컴파일되고 PDO 디버그 모드인 경우에만 사용할 수 있습니다.
목차
- PDO_MYSQL DSN — MySQL 데이터베이스에 연결