Forum und email

MySQL 함수

소개

이 함수들은 MySQL 데이터베이스 서버에 접근할 수 있도록 합니다. MySQL에 대한 정보는 » https://www.mysql.com/에서 확인할 수 있습니다.

MySQL 문서는 » https://dev.mysql.com/doc/에서 볼 수 있습니다.

요구 조건

이 함수들을 사용하려면, PHP가 MySQL을 지원하도록 컴파일해야 합니다.

설치

설정 옵션 --with-mysql[=DIR]을 사용하여 PHP가 MySQL 데이터베이스 접근을 활성화합니다.

PHP 4에서는, 옵션 --with-mysql은 기본값으로 활성화되어 있습니다. 이 기본 행동을 비활성화하기 위해서, 설정 옵션 --without-mysql을 사용할 수 있습니다. 또한 PHP 4에서는, MySQL 설치 DIR 경로를 지정하지 않고 MySQL을 활성화하면, PHP는 번들된 MySQL 클라이언트 라이브러리를 사용합니다. 윈도우즈에서는, DLL 없이, 단순히 PHP 4에 포함되어 있습니다. MySQL을 사용하는 다른 어플리케이션(예를들면, auth-mysql)을 사용하는 유저는 번들된 라이브러리를 사용하지 말고, 다음 방법으 MySQL의 설치 디렉토리 경로를 지정해야 합니다: --with-mysql=/path/to/mysql. 이는 PHP가 MySQL에 의해 설치한 클라이언트 라이브러리를 사용하도록 강제해서, 혼동을 피하게 합니다.

PHP 5에서는, MySQL은 더이상 기본값으로 활성화되어있지 않고, MySQL 라이브러리도 PHP에 번들되어 있지 않습니다. 자세한 이유에 대해서는 FAQ를 읽어보십시오.

MySQL 확장은 MySQL 4.1.0 이상의 모든 기능을 지원하지 않습니다. 대신, MySQLi를 사용하십시오.

mysqli 확장과 함께 mysql 확장을 설치하려 할 때는, 혼동을 피하기 위해 같은 클라이언트 라이브러리를 사용해야 합니다.

Warning

레코드 확장과 함께 이 확장을 로드할 때, PHP의 충돌과 시작 문제가 발생할 수 있습니다. 자세한 정보는 레코드 확장을 참고하십시오.

Note: latin(기본값) 외의 문자셋이 필요하면, 문자셋 지원으로 컴파일한 외부(번들이 아닌) libmysql을 설치해야 합니다.

실행시 설정

이 함수의 작동은 php.ini 설정에 영향을 받습니다.

MySQL 설정 옵션
이름 기본값 설정권한 변경점
mysql.allow_persistent "1" PHP_INI_SYSTEM  
mysql.max_persistent "-1" PHP_INI_SYSTEM  
mysql.max_links "-1" PHP_INI_SYSTEM  
mysql.trace_mode "0" PHP_INI_ALL PHP 4.3.0부터 사용할 수 있습니다.
mysql.default_port NULL PHP_INI_ALL  
mysql.default_socket NULL PHP_INI_ALL PHP 4.0.1부터 사용할 수 있습니다.
mysql.default_host NULL PHP_INI_ALL  
mysql.default_user NULL PHP_INI_ALL  
mysql.default_password NULL PHP_INI_ALL  
mysql.connect_timeout "60" PHP_INI_ALL PHP <= 4.3.2에서는 PHP_INI_SYSTEM입니다. PHP 4.3.0부터 사용할 수 있습니다.
PHP_INI_* 상수에 대한 자세한 상세와 정의는 php.ini directives를 참고하십시오.

위 설정 지시어에 대한 간단한 설명입니다.

mysql.allow_persistent boolean

MySQL에 지속 접속의 허용 여부.

mysql.max_persistent integer

프로세스 당 MySQL 지속 접속의 최대수.

지속 접속을 포함하여, 프로세스 당 MySQL 접속의 최대수.

mysql.trace_mode boolean

추적 모드. mysql.trace_mode를 활성화 하면, 테이블/인덱스 스캔, 해제되지 않은 결과 셋 등의 경고 메세지 및 SQL 오류 메세지가 표시됩니다. (PHP 4.3.0에서 추가)

mysql.default_port string

다른 포트를 지정하지 않았을 때, 데이터베이스 서버 접속에 사용하는 기본 TCP 포트. 기본값이 설정되지 않으면, MYSQL_TCP_PORT 환경 변수, /etc/servicesmysql_tcp, 컴파일 시의 MYSQL_PORT 상수를 순차적으로 확인합니다. Win32에서는 MYSQL_PORT 상수만을 사용합니다.

mysql.default_socket string

다른 소켓 이름을 지정하지 않았을 때, 로컬 데이터베이스 서버 접속에 사용하는 기본 소켓 이름.

mysql.default_host string

다른 호스트를 지정하지 않았을 때, 데이터베이스 서버에 접속할 때 사용하는 기본 서버 호스트. SQL 안전 모드에서는 적용하지 않습니다.

mysql.default_user string

다른 이름을 지정하지 않았을 때, 데이터베이스 서버 접속에 사용하는 기본 유저 이름. SQL 안전 모드에서는 적용하지 않습니다.

mysql.default_password string

다른 패스워드를 지정하지 않았을 때, 데이터베이스 서버 접속에 사용하는 기본 패스워드. SQL 안전 모드에서는 적용하지 않습니다.

mysql.connect_timeout integer

초로 나타낸 접속 시간 초과. 리눅스에서는 이 시간 초과를 서버로부터 첫번째 응답이 오기를 기다리는 데에도 사용합니다.

자원형

MySQL 모듈에서 사용하는 두가지 자원형이 존재합니다. 첫번째는 데이터베이스 접속을 위한 연결 확인자, 두번째는 쿼리의 결과를 가지는 자원입니다.

예약 상수

이 확장은 다음의 상수들을 정의합니다. 이 확장을 PHP에 내장했거나, 실행시에 동적으로 읽어들일 경우에만 사용할 수 있습니다.

PHP 4.3.0부터 mysql_connect()mysql_pconnect()에 추가 클라이언트 플래그를 지정할 수 있습니다. 다음의 상수가 정의되어 있습니다:

MySQL client constants
상수 설명
MYSQL_CLIENT_COMPRESS 압축 프로토콜을 사용합니다.
MYSQL_CLIENT_IGNORE_SPACE 함수 이름 뒤의 공백을 허용합니다.
MYSQL_CLIENT_INTERACTIVE 접속을 종료하기 전 비활동의 (wait_timeout 대신) interactive_timeout 초를 허용합니다.

mysql_fetch_array()은 반환 배열을 다른 형식으로 나타내기 위한 상수를 사용합니다. 다음의 상수가 정의되어 있습니다:

MySQL fetch constants
상수 설명
MYSQL_ASSOC 배열 인덱스로 필드 이름을 가지는 배열로 컬럼을 반환합니다.
MYSQL_BOTH 배열 인덱스로 숫자 인덱스와 필드 이름을 둘 다 가지는 배열로 컬럼을 반환합니다.
MYSQL_NUM 필드에 대한 숫자 인덱스를 가지는 배열로 컬럼을 반환합니다. 인덱스는 결과의 첫번째 필드를 0으로 시작합니다.

예제

MySQL 데이터베이스에 접속하여, 쿼리를 실행하고, 결과열을 출력하고, 접속을 끊는 방법을 보여주는 간단한 예제입니다.

Example#1 MySQL 확장 개요 예제

<?php
/* 접속하고, 데이터베이스를 선택 */
$link mysql_connect("mysql_host""mysql_user""mysql_password")
    or die(
"접속할 수 없습니다 : " mysql_error());
echo 
"접속 성공";
mysql_select_db("my_database") or die("데이터베이스를 선택할 수 없습니다.");

/* SQL 쿼리 실행하기 */
$query "SELECT * FROM my_table";
$result mysql_query($query) or die("쿼리 실패 : " mysql_error());

/* HTML로 결과 출력하기 */
echo "<table>\n";
while (
$line mysql_fetch_array($resultMYSQL_ASSOC)) {
    echo 
"\t<tr>\n";
    foreach (
$line as $col_value) {
        echo 
"\t\t<td>$col_value</td>\n";
    }
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";

/* 결과셋 해제하기 */
mysql_free_result($result);

/* 접속 종료 */
mysql_close($link);
?>

Table of Contents