PDO::__construct
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::__construct — 데이터베이스에 대한 연결을 나타내는 PDO 인스턴스를 생성합니다.
설명
public PDO::__construct( string $dsn, ?string $username = null, ?string $password = null, ?array $options = null )
요청된 데이터베이스에 대한 연결을 나타내는 PDO 인스턴스를 만듭니다.
매개변수
- dsn
- 데이터 소스 이름(DSN)에는 데이터베이스에 연결하는 데 필요한 정보가 포함되어 있습니다.
일반적으로 DSN은 PDO 드라이버 이름, 콜론, PDO 드라이버별 연결 구문으로 구성됩니다. 추가 정보는 PDO 드라이버 관련 문서에서 사용할 수 있습니다.
dsn
매개변수는 데이터베이스 연결을 작성하는 데 필요한 인수를 지정하는 세 가지 다른 메서드를 지원합니다.- Driver invocation
dsn
은 전체 DSN을 포함합니다.- URI invocation
dsn
은uri:
다음에 DSN 문자열을 포함하는 파일의 위치를 정의하는 URI로 구성됩니다. URI는 로컬 파일 또는 원격 URL을 지정할 수 있습니다.uri:file:///path/to/dsnfile
- Aliasing
dsn
은 DSN 문자열을 정의하는 php.ini의pdo.dsn.
에 매핑되는name
name
이름으로 구성됩니다.메모: 별칭은 .htaccess 또는 httpd.conf가 아닌 php.ini에 정의되어야 합니다.
- username
- DSN 문자열의 사용자 이름입니다. 이 매개변수는 일부 PDO 드라이버의 경우 선택사항입니다.
- passwd
- DSN 문자열의 암호입니다. 이 매개변수는 일부 PDO 드라이버의 경우 선택사항입니다.
- options
- 드라이버별 연결 옵션의 key=>value 배열입니다.
오류/예외
PDO::__construct()는 현재 설정된 PDO::ATTR_ERRMODE
에 관계없이 요청된 데이터베이스에 대한 연결 시도가 실패하면 PDOException을 발생시킵니다.
Examples
예제 #1 드라이버 호출을 통해 PDO 인스턴스 생성
<?php
/* Connect to a MySQL database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);
?>
예제 #2 URI 호출을 통해 PDO 인스턴스 생성
다음 예에서는 /usr/local/dbconnect 파일이 PHP가 파일을 읽을 수 있도록 하는 파일 권한이 있다고 가정합니다. 파일에는 PDO_ODBC 드라이버를 통해 DB2 데이터베이스에 연결하기 위한 PDO DSN이 포함되어 있습니다.
odbc:DSN=SAMPLE;UID=john;PWD=mypass
그런 다음 PHP 스크립트는 단순히 uri:
매개변수를 전달하고 파일 URI를 지정하여 데이터베이스 연결을 생성할 수 있습니다.
<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'uri:file:///usr/local/dbconnect';
$user = '';
$password = '';
$dbh = new PDO($dsn, $user, $password);
?>
예제 #3 별칭을 사용하여 PDO 인스턴스 만들기
다음 예에서는 php.ini에 mydb
라는 별칭만 사용하여 MySQL 데이터베이스에 연결할 수 있는 다음 항목이 포함되어 있다고 가정합니다.
[PDO] pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php
/* Connect to an ODBC database using an alias */
$dsn = 'mydb';
$user = '';
$password = '';
$dbh = new PDO($dsn, $user, $password);
?>