강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

디. php 기초 -4 php의 DB 관련 함수

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

[강좌] php+mysql 게시판 만들기 #디-4

안녕하세요. 디망쉬입니다.

드림캐스트라는 컨슈머 기기(게임기)의 건버드 2 라는 슈팅 게임을 거금 65,000 원 주고 구입했습니다.
아아. 정말 일본의 싸이쿄 애들은 슈팅 게임 하나는 죽여주게 잘 만드내요.
감동 감동. T_T


icon04.gif 디. 기초 - d. php 의 DB 관련 함수들 (for MySQL)

별 거 없습니다. php 과 mysql 을 연동하여 게시판을 짤 때 많이 쓰일만한 관련 함수입니다.

mysql_connect("서버주소","id","비번")
mysql_select_db("DB이름",$connect)
mysql_close()
mysql_query("명령어",$connect)
mysql_fetch_array()
mysql_fetch_row()
mysql_num_rows()
mysql_result

이게 끝입니다. 적어도 요정도만 아시면 게시판 짤 때 무리가 전혀 없습니다.
단지 말만 그런게 아니라 제가 실제로 위의 함수들로만 게시판을 짜는데 무리가 없었습니다.
그럼 하나 하나 알아보도록 하죠.


mysql_connect("서버주소","id","비번")
mysql_select_db("DB이름",$connect)


mysql 서버에 접속하는 함수입니다. 거의 항상 쌍으로 붙어다니죠. ^^;

'서버주소' 는 접속할 mysql 의 위치입니다.
만약 해당 php 가 mysql 서버와 같은 곳이라면 localhost 만 적어주심 됩니다.
만약 외부라면 외부의 ip address 를 쓰면 되구요.
그리고 id 는 접속할 id 이고 비번은 그 id 의 비번입니다.
그리고 DB 이름은 접근할 DB 이름입니다.
만약 mysql 의 id 가 dimanche 이고 비번은 1234 이며, DB 이름은 dimancheDB 일 경우
(리눅스/유닉스) 쉘 상에서는

mysql -udimanche -p1234 dimancheDB


로 접근을 하죠. 이걸 위의 두 함수로 하는 겁니다.


mysql_close()


이 함수는 방금 알아본 함수를 통해 한 접속을 끊어주는 겁니다.
사실 이거 없어도 알아서 접속은 종료됩니다.
하지만 기왕이면 접속을 끊을 때는 끊어주는게 좋습니다. 습관상요. :)


mysql_query("명령어",$connect)


mysql 명령어(쿼리)를 보내는 함수입니다.
mysql 에 접속하여

SELECT * from test;


라고 했다면, 이것을 php 가 mysql 로 넘겨줄 방법이 필요한데, mysql_query 가 바로 그 대안이죠.

mysql_query("select * from test",$connect);

하면 " 과 " 사이의 select * from text 가 mysql 로 보내지고 그 결과값을 리턴하죠. 이때 리턴되는
값을 받아야 하므로 저장될 변수명를 지정해주면 되겠죠?

$result = mysql_query ...(후략)


이러면 mysql_query 가 보낸 쿼리, 즉 명령어의 결과가 $result 에 들어갑니다.

그런데 이 뜬금없이 나타난 $connect 의 정체가 궁금하지 않으세요? ^^;
이건 사실 여러분이 함수를 통짜로 외우라는 의미에서 mysql_select_db 를 쓰다보니 난데없이 나타난 겁니다. 보통 mysql_connect() 와 mysql_select_db() 함수를 사용할 때 아래처럼 사용합니다.

 

$connect = mysql_connect("서버주소","id","비번")
mysql_select_db("DB이름",$connect)


이건 mysql_connect 함수가 성공적으로 완료되었는지 아닌지에 대한 숫자가 리턴됩니다.
그 값을 $connect 가 갖고 있죠.
그리고 mysql_select_db 에서 $connect 부분은 $connect 의 값이 정상적으로 작동됨을 의미하는
1 일 경우 mysql_select_db 가 작동되는 겁니다.
(아니면 말구요. -_-;)

이 말은 mysql_select_db() 에서 $connect 를 생략하고 mysql_select_Db("DB이름"); 만 해도 된다는 말이죠.

아무튼 mysql_query 도 마찬가지 이유입니다. ^^;


mysql_fetch_array()

mysql_query 로부터 넘어온 값을 배열로 가져오는 역할을 합니다. DB 의 테이블이 다음과 같다고 보죠.

+----+----------+----------+
: no : id : name :
+----+----------+----------+
: 1 : dimanche : 디망쉬 :
: 2 : banx : 방재석 :
: 3 : lpark : 에로박 :
+----+----------+----------+


여기서 no, id, name 은 스키마(schema)라고 부를겁니다.
맞건 안맞건 넘어가요. ^^; 이런 용어는 중요한게 아니니.
아무튼 mysql_fetch_array 로 값을 가져오면 스키마의 이름으로 배열됩니다.

$query = "SELECT * FROM test WHERE no=1";
$result = mysql_query($query, $connect);


이렇게 하면 no 가 1인 모든 내용이 $result 에
넘어갑니다. 이걸

$infor = mysql_fetch_array($result);


라고 하면 다음과 같이 배열이 됩니다.

$infor[no] => 1
$infor[id] => dimanche
$infor[name] => 디망쉬


에. 무슨 말인지 모르시겠다구요? 그럼 다음 함수를 보죠. ^^;
그럼 차이를 느끼시게 되고 그에 따라 무슨 내용인지 이해가 가실 겁니다.mysql_fetch_row()


mysql_fetch_array() 와 같은 역할입니다.
다만 mysql_fetch_array() 는 배열 방 이름이 스키마와 같다면, mysql_fetch_row() 는 배열 방 이름이
순서대로 숫자가 매겨집니다.


$infor = mysql_fetch_row($result);


이렇게 할 경우

$infor[0] => 1
$infor[1] => dimanche
$infor[2] => 디망쉬


가 됩니다. 분명 mysql_fetch_array 와 역할이 같지만 형식은 약간 차이가 나죠?

중요한 것은 위 두 함수는 mysql_query 로부터 넘어온 값을 실제로 사용하도록 값을 정리해서(?)
가져온다는 겁니다. 위 두 개 중 어떤 걸 쓰시건 상관 없습니다.
마음에 드는 걸 쓰시면 되죠. 전 mysql_fetch_array() 가 더 사용하기가 편해서 mysql_fetch_array 를 애용합니다.


mysql_num_rows()


mysql_query 로 부터 넘어온 값에서 줄 수를 알아내는 함수입니다. 저 위의 테이블을

$count = mysql_num_rows($result);

 


로 하면 $count 변수에는 3 이 들어가겠죠.
^^; 저의 경우 이 함수를 해당 자료가 있는지 없는지 알아낼 때 주로 사용합니다.
mysql_num_rows() 함수로 체크해봐서 값이 0 이면 해당 자료나 정보가 없는 것이고 0 초과면
해당 자료가 있다는 거죠.
회원 가입 받고 관리하는 것을 짤 때 유저의 id 가 이미 존재하는지 존재하지 않는지 체크하면 되겠죠?


mysql_result()


mysql_query 로부터 넘어온 결과 값을 잡아내는 거라고 영문 메뉴얼에는 나와있습니다.
형식은

mysql_result(int result, int row, mixed field);


라고 하는군요. 자세히 설명을 하라면 솔직히 할 자신이 없습니다. -_-; 뭘 어떻게 설명해야 할 지.
하지만 확실한 건 전 이 함수를 해당 자료의 총 갯수를 알아낼 때 사용한다는 거죠.
아래처럼요.

$query = "SELECT COUNT(*) FROM test";
$result = mysql_query($query,$connect);
$total = mysql_result($result, 0, "COUNT(*)");


이라고 하면 $total 에는 test 테이블의 총 자료의 갯수가 나오죠. 쯔압.


에헤헤. 끝났습니다. 이제 '디'편의 마지막인 'e. 이정도는 알아야 한다.' 로 넘어가겠습니다.

----------------------------
함께하면 즐거운 사이트들 (-_-; 광고임 -_-;)
http://game.creple.com/delthia
http://creple.com
http://coco.st
----------------------------


- ?! 디망쉬

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  77 명