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 확장을 설치하려 할 때는, 혼동을 피하기 위해 같은 클라이언트 라이브러리를 사용해야 합니다.
레코드 확장과 함께 이 확장을 로드할 때, PHP의 충돌과 시작 문제가 발생할 수 있습니다. 자세한 정보는 레코드 확장을 참고하십시오.
Note: latin(기본값) 외의 문자셋이 필요하면, 문자셋 지원으로 컴파일한 외부(번들이 아닌) libmysql을 설치해야 합니다.
실행시 설정
이 함수의 작동은 php.ini 설정에 영향을 받습니다.
이름 | 기본값 | 설정권한 | 변경점 |
---|---|---|---|
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부터 사용할 수 있습니다. |
위 설정 지시어에 대한 간단한 설명입니다.
- mysql.allow_persistent boolean
-
MySQL에 지속 접속의 허용 여부.
- mysql.max_persistent integer
-
프로세스 당 MySQL 지속 접속의 최대수.
- mysql.max_links integer
-
지속 접속을 포함하여, 프로세스 당 MySQL 접속의 최대수.
- mysql.trace_mode boolean
-
추적 모드. mysql.trace_mode를 활성화 하면, 테이블/인덱스 스캔, 해제되지 않은 결과 셋 등의 경고 메세지 및 SQL 오류 메세지가 표시됩니다. (PHP 4.3.0에서 추가)
- mysql.default_port string
-
다른 포트를 지정하지 않았을 때, 데이터베이스 서버 접속에 사용하는 기본 TCP 포트. 기본값이 설정되지 않으면, MYSQL_TCP_PORT 환경 변수, /etc/services의 mysql_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_COMPRESS | 압축 프로토콜을 사용합니다. |
MYSQL_CLIENT_IGNORE_SPACE | 함수 이름 뒤의 공백을 허용합니다. |
MYSQL_CLIENT_INTERACTIVE | 접속을 종료하기 전 비활동의 (wait_timeout 대신) interactive_timeout 초를 허용합니다. |
mysql_fetch_array()은 반환 배열을 다른 형식으로 나타내기 위한 상수를 사용합니다. 다음의 상수가 정의되어 있습니다:
상수 | 설명 |
---|---|
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($result, MYSQL_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
- mysql_affected_rows — 최근 MySQL 작업으로 변경된 행 개수를 얻음
- mysql_change_user — 현 접속에서 로그인된 사용자를 변경
- mysql_client_encoding — 문자셋을 반환
- mysql_close — MySQL 접속을 닫음
- mysql_connect — MySQL 서버에 접속
- mysql_create_db — MySQL 데이터베이스를 생성
- mysql_data_seek — 내부 결과 포인터를 이동
- mysql_db_name — 결과 데이터를 반환
- mysql_db_query — MySQL 질의를 전송
- mysql_drop_db — MySQL 데이터베이스를 삭제
- mysql_errno — 최근 MySQL 작업으로 발생한 에러 번호를 반환
- mysql_error — 최근 실행된 MySQL 작업으로 발생한 에러 메시지를 반환
- mysql_escape_string — mysql_query에서 문자열을 escape하기위해 사용
- mysql_fetch_array — 연관 색인 및 숫자 색인으로 된 배열로 결과 행을 반환
- mysql_fetch_assoc — 연관 배열로 결과 행을 반환
- mysql_fetch_field — 결과로 부터 컬럼 정보를 얻어서 객체형태로 반환
- mysql_fetch_lengths — 결과로부터 각 출력의 길이를 반환
- mysql_fetch_object — 객체형으로 결과 행을 인출
- mysql_fetch_row — 숫자 색인 배열로 결과를 반환
- mysql_field_flags — 결과로부터 특정 필드와 관련된 플래그를 반환
- mysql_field_len — Returns the length of the specified field
- mysql_field_name — 결과로부터 특정 필드의 이름을 반환
- mysql_field_seek — 특정 필드의 오프셋으로 결과 포인터를 이동
- mysql_field_table — 특정 필드가 속한 테이블명을 얻음
- mysql_field_type — 결과로부터 특정 필드의 데이터 형(type) 정보를 반환
- mysql_free_result — 질의결과를 메모리에서 해제
- mysql_get_client_info — MySQL 클라이언트 정보를 반환
- mysql_get_host_info — MySQL 호스트 정보를 반환
- mysql_get_proto_info — MySQL 프로토콜 정보를 얻는다
- mysql_get_server_info — MySQL 서버 정보를 반환
- mysql_info — 가장 최근 질의에 대한 정보를 반환
- mysql_insert_id — 이전의 INSERT 작업으로부터 생성된 ID를 반환
- mysql_list_dbs — MySQL 서버에 있는 데이터베이스 목록을 반환
- mysql_list_fields — MySQL 테이블 필드를 반환
- mysql_list_processes — MySQL 프로세스 목록을 반환
- mysql_list_tables — MySQL 데이터베이스에서 테이블 목록을 반환
- mysql_num_fields — 결과로부터 필드의 개수를 반환
- mysql_num_rows — 결과로부터 행의 개수를 반환
- mysql_pconnect — MySQL 서버로 영속적으로 접속
- mysql_ping — 서버 접속을 검사하고 접속이 없으면 재접속한다
- mysql_query — MySQL 질의를 전송
- mysql_real_escape_string — mysql_query에서 특수 문자열을 이스케이프(escape)하기위해 사용
- mysql_result — 결과 데이터를 반환
- mysql_select_db — MySQL 데이터베이스를 선택
- mysql_set_charset — Sets the client character set
- mysql_stat — 현재 시스템 상태를 반환
- mysql_tablename — 필드가 존재하는 테이블명을 반환
- mysql_thread_id — 현재 쓰레드 ID를 반환
- mysql_unbuffered_query — 결과 행을 버퍼링하지도 인출하지도 않으면서 MySQL로 SQL 질의를 전송