[PHP MySQL 명령어 실행 함수
mysql_query]
php에서 데이터베이스(MySQL)에게 SQL 명령어를 실행시키기 위해서는 mysql_query 함수가
사용됩니다.
sql 명령어라 두리뭉실하게 말씀드렸는데, 이것을 기능에 의해서 세분화 해보면 아래와
같습니다.
DDL(데이터정의어) - CREATE, ALTER, DROP
DML(데이터조작어) - SELECT, INSERT,
UPDATE, DELETE
DCL(데이터제어어) - GRANT, REVOKE,
CASECADE, RESTRICT
mysql_query 함수는 SQL 명령어라면 위의 세가지중 대부분(정확히 전부 테스트해 보지 못했슴)을 멋지게 실행시킵니다. 아래의 예제는 mysql_query 함수를 이용해서 어여쁜 테이블 하나를 만들고 있습니다.
|
다음은 위의 예제에서 생성된 test_member 테이블에 INSERT 문을 이용해서 하나의 레코드를 추가하는 예제입니다.
|
MySQL에게 전달된 SQL 명령어가 INSERT, UPDATE, DELETE, DROP 등이라면 mysql_query 함수의 실행결과가 참일때 TRUE를 반환하게 되며 mysql_affected_rows 함수를 이용해서 변경된 레코드의 갯수를 알수 있습니다. 위의 예제가 성공하게 되면 "INSERT로 입력된 레코드의 갯수는:1" 이라는 문자열이 출력됩니다.
아래 예제는 SELECT 문을 이용해서 위의 예제에서 입력된 레코드를 화면에 출력하게 됩니다.
|
select 문의 실행결과로 반환된 레코드셋(data set)을 가져오기 위해서는 mysql_fetch
시리즈로 시작되는 함수들중 하나를 사용해야 합니다. 위에 사용된 mysql_fetch_row 함수는 레코드셋을 배열로 반환하는데 개별 컬럼의
값을 가져오기 위해서는 위와 같이 컬럼의 순서를 나타내는 번호를 사용해야 합니다.
echo"'$row[0]' '$row[1]' '$row[2]'<br>\n";
반환된 레코드셋을 컬럼명을 이용해서 참조하기 위해서는 mysql_fetch_array 함수를 사용합니다.
아래 예제는 위의
예제에서 사용된 mysql_fetch_row 함수를 mysql_fetch_array 함수로 바꿔 사용했습니다.
|
위의 예제에서 보이듯이 mysql_fetch_array 함수는 컬럼의 값을 가져올때 컬럼명이든 컬럼의 번호든 상관없습니다.
마지막으로 MySQL 테이블에서 레코드셋이 아닌 단 한개의
데이터만 가져올수 있는 mysql_result 함수가 있습니다.
아래는 mysql_result 함수의 사용예제입니다.
|
mysql_result 함수는 mysql_fetch_row 함수나 mysql_fetch_array 함수보다 두개의 인자를 더 취하는데 첫번째 인자는 레코드(행)번호이고, 두번째 인자는 컬럼의 번호입니다. 특이한 점은 레코드 번호나 컬럼의 번호가 1부터 시작하는게 아니고 0 부터 시작한다는 것입니다.
mysql_result($result,0,0) 은 첫번째 레코드, 첫번째
컬럼을 의미합니다.
mysql_result($result,0,1) 은 첫번째 레코드, 두번째 컬럼을
의미합니다.
mysql_result($result,0,2) 은 첫번째 레코드, 세번째 컬럼을 의미합니다.
mysql_result($result,1,1) 은 두번째 레코드, 두번째
컬럼을 의미합니다.
mysql_result($result,1,2) 은 두번째 레코드, 세번째 컬럼을
의미합니다.
mysql_result($result,1,3) 은 두번째 레코드, 네번째 컬럼을
의미합니다.
php4 이전버전에서는 mysql_fetch_row 함수가, mysql_fetch_array
함수보다 속도면에서 빠른것으로 소개되었으나, 현재는 속도차이가 거의 없다고 합니다.
위의 include("dbcon.php") 는 MySQL의 접속 명령어가 삽입되어 있는 dbcon.php
파일을 포함하라는
뜻입니다. dbcon.php 파일의 내용은 다음과 같을 것입니다.
|
출처 : http://www.webmadang.net/develop/develop.do?action=read&boardid=1003&page=2&seq=44