웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
PHP에서 사용하는 간단하지만 중요한 MySQL함수들
2002.08.22 09:23
오늘 정말 큰용기를 내서.. 한국식당가서.. 짱깨를 한번 먹었습니다..
한국에서 막살다온사람이었다면 반틈도 못먹고 버릴정도로 맛없는 짱깨지만
짱깨맛이 너무나 그리운 저에게는 너무나도 맛있는 짱깨였답니다.
비록 퓨전짱깨(변형된 짱깨)였지만.. 나름대로 욕구충족은 했답니다..^^
오늘 아침에 올린 강좌를 마지막으로 기본 게시판 강좌는 끝났네요..
아침에 그 강좌올리고는 1줄 메모장을 만들었답니다..^^
보신분들도 있을거고 못보신분들도 있을건데..
현재 강좌란 메인 페이지 우측의 "소감 한말씀 올리시지요" 라는 메뉴와
FreeBoard, Q & A, Tip & Tech 란에 좌측 상단에 "Love is.." 라는 두개의 메뉴에
한줄 메모장을 링크해뒀답니다..^^
나중에 시간이 되면.. 이 메모장 만드는 강좌도 준비할게요..
에혀~ 잡담이 넘 길었네요..
이제 본론으로 들어가야지요.
PHP에서 사용하는 MySQL함수들에 대해서 알아볼려고 합니다.
수없이 많겠지만.. 현재 초보분들.. 또는 막시작하신분들.. 게시판을 만들려고 하시는분들에게
필요한 엑기스 함수에 대해서만 설명하도록 하겠습니다.
mysql_connect()
많이들 보셨을겁니다. PHP에서 쿼리문을 시작하기전에 반드시 와야만 하는 함수이죠..
디비에 연결하는 함수입니다.
사용법은 다음과 같습니다.
mysql_connect( "호스트","아뒤","비번");
이렇게 사용을 한답니다.
주로 위처럼 사용하기보다는
$connect=mysql_connect( "호스트","아뒤","비번");
이렇게 많이 사용합니다.
이유는 이러합니다. 아래의 예를 보시면 이해가 가실겁니다.
$connect=mysql_query("localhost","Mr.JH","xxxxxx");
if($connect){
echo "접속에 성공했습니다.";
}else{
echo "접속에 실패했습니다.";
}
?>
이렇게 사용을 한답니다..^__^
mysql_close()
디비와의 연결을 끊을때 사용하는 함수입니다.
뭐.. 사용방법은.. 간단합니다. 위에서 연결을 끊는다고 한다면
mysql_close($connect);
근데 꼭 이렇게 안닫아줘도.. 소스를 다 읽고나면 자동으로 디비를 닫는다고 하는데
이걸 사용하면 메모리 관리상 좋다고 하는데.. 그런 문제까지 다 따지면
제 성격으로는 이 세상 못살아갑니다.. --;;
참고로 전 이거 사용안합니다. 귀차나서..
mysql_select_db()
디비를 선택하는 함수입니다.
즉, 위에서 데이터베이스에 연결만 했지 아직 디비선택을 안했습니다.
mysql_select_db()함수를 이용해서 자신의 디비를 선택해야 합니다.
이용방법은 mysql_select_db(디비명)이렇게 사용합니다.
mysql_query
가장 중요한 함수라고 생각합니다. 가장 중요하기보다는 꼭 필요한 함수죠..
바로 쿼리를 MySQL서버로 전달해주는 함수죠..
만약에 board_mrjh라는 테이블에서 자료를 가지고 올려면 select 문을 사용해야하죠..
이 셀렉트문을 데이터베이스 서버로 전송시켜주는 역할을 하는거죠..
일반적인 사용방법은 이러합니다..
$que="select * from board_mrjh";
mysql_query($select);
이렇게 사용을 하지만 나중에 익숙해지면 그냥
$que=mysql_query("select * from board_mrjh");
이렇게 사용을 하셔도 됩니다.
자.. 지금까지는 기초적인 디비 함수였고..
이제부터는.. 중요합니다.
바로 mysql_query로 쿼리한 결과물을 브라우져에 출력시켜주는 함수입니다.
mysql_num_rows
mysql_fetch_row
mysql_fetch_array
이 세가지 함수를 잘 사용하셔야 합니다.
물론 다른 함수도 있지만.. 이 3가지 함수만 잘 사용한다면..
거의 90%이상의 작업은 다 해낼수있다고 생각합니다.
우선 mysql_num_rows부터 알아보겠습니다.
이건 쿼리문의 결과의 갯수를 출력시켜줍니다.
즉, 무슨 말이냐면.. board_mrjh라는 테이블에 no가 1~65 까지있다고 가정하면..
1부터 65까지 세면 몇개입니까?? --;; 65개죠??
바로 이말입니다.
쿼리한 결과의 갯수를 반환시켜주는 함수입니다.
예를 살짝보면 (board_mrjh테이블 속에는 100개의 자료가 있다고 가정하겠습니다.)
$que=mysql_query("select * from board_mrjh");
$total=mysql_num_rows($que);
echo $total;
이걸 브라우져 상에 출력하면.. 결과는 100입니다.
무슨말인지 아시겠죠??
이건 언제 사용하냐면.. 크게 두가지로 분류합니다.
첫번째는 게시판에서 전체글이 몇개가 있는지 알아볼때.. 사용합니다.
두번째는 비밀번호나 아이디 검사할때.. 입력한 쿼리에 해당하는 자료가 있는지
없는지를 검사합니다. 0이면.. 즉 자료가 없다면 false를 그외 1 이상이라면 true가 되겠죠..
이렇게 사용을 하게되는 첫번째의 글이 몇개있는지 사용할때는
게시판의 글수가 몇개 안될때는 별상관없겠지만..
글이 무지하게 많아진다면 좀 고려해봐야할겁니다.
그런 경우에는 mysql_num_rows()라는 함수보다는 쿼리할때
select count(필드) from 테이블
이러한 쿼리를 해줘야 할겁니다. count()라는 함수를 이용해서 해당 필드에 있는
갯수를 반환시켜주는 방법을 채택해야 할겁니다.
좀전에 제가 테스트해봤는데.. 백만개의 글이 있는 테이블에서
select count(no) from board_mrjh
라고 쿼리를 했는데.. 0.0 초가 걸리더군요..
즉, 백만개가 있어도.. 부하가 거의 안걸린다는 이야기죠..
자.. 요기까지.. mysql_num_rows를 마치고 이제 가장 중요한 두가지를 이야기 하죠..
mysql_fetch_row 와 mysql_fetch_array 는겉모습만 봐도
비슷해보이죠??
네, 맞습니다. 비슷한거 맞습니다. 사실상 해주는 일은 같습니다.
다만 사용방법이 틀릴뿐입니다.
저는 mysql_fetch_array를 사용할것을 추천하고 싶습니다.
제가 추천안해도 분명히 여러분들도 msql_fetch_arrary를 사용하게 될겁니다.
왜냐하면 그게 훨씬 편하거든요..^^
구차하게.. 지루한 책처럼 두개의 근본적인 차이나.. 설명같은건 안하겠습니다.
걍 간단하게 예로써.. 두개의 차이를 설명하겠습니다.
예)
우리는 board 라는 테이블을 가지고 있습니다.
그리고 이 board 테이블 속에는 no, name, title, memo 순으로 필드가 있습니다.
좀더 구체적으로 묘사하면..
---------------------------------------------
| no | name | title | memo |
| 1 | ole2000 | 강좌1 | 냉무--;; |
| 2 | ole2000 | 강좌2 | 냉무--;; |
| 3 | ole2000 | 강좌3 | 냉무--;; |
| 4 | ole2000 | 강좌4 | 냉무--;; |
| 5 | ole2000 | 강좌5 | 냉무--;; |
| 6 | ole2000 | 강좌6 | 냉무--;; |
| 7 | ole2000 | 강좌7 | 냉무--;; |
| 8 | ole2000 | 강좌8 | 냉무--;; |
---------------------------------------------
자!!! 제가 그림을 그린이상 게임은 끝났습니다.
이제 이해가 가죠??
이제 쿼리를 시작하겠습니다. 잘보세요!!
1) mysql_fetch_row를 이용한 쿼리
$que=mysql_query("select * from board where no='3'");
$data=mysql_fetch_row($que);
echo " no가 3인 줄에서 no는 $data[0] 이고 name은 $data[1]이고 title는 $data[2] 이며
memo는 $data[3] 입니다.";
2) mysql_fetch_array를 이용한 쿼리
$que=mysql_query("select * from board where no='3'");
$data=mysql_fetch_array($que);
echo " no가 3인 줄에서 no는 $data[no] 이고 name은 $data[name]이고 title는 $data[title] 이며
memo는 $data[memo] 입니다.";
자.. 이해가 팍팍 오시나요?? 제가 그랬죠?? 제가 그림을 그린이상 게임은 끝났다고
바로 이차이입니다.
사실 두개다 똑같이 해당필드를 배열로 가져온다는건 같습니다.
근데 mysql_fetch_row는 [0],[1] 이렇게 가져온다는거죠..
책에 의하면 (전문용어로) 인덱스를 참조한다고 하네요..
근데 우리는 책에나온.. 그런 이해하기 힘든말들과는 별로 안친합니다.
이미 우리는 두개의 차이를 명백히 이해해버렸기때문에 더이상의 설명은 필요없습니다.
이제 mysql_fetch_array를 사용하실거죠??
네.. 바로 필드명만 알고있다면.. 아주 쉽게 값을 가져올수있다는 장점이 있는거죠..
아.. 한동안 저혼자 그림그리고.. 열내서 설명했더니.. 좀 덥네요..^^
이제... 저는 또 다음 작업꺼리를 찾으러 갑니다.
여러분들도 공부 열쒸미 하세요...^^
<ㅑㅇ~~
한국에서 막살다온사람이었다면 반틈도 못먹고 버릴정도로 맛없는 짱깨지만
짱깨맛이 너무나 그리운 저에게는 너무나도 맛있는 짱깨였답니다.
비록 퓨전짱깨(변형된 짱깨)였지만.. 나름대로 욕구충족은 했답니다..^^
오늘 아침에 올린 강좌를 마지막으로 기본 게시판 강좌는 끝났네요..
아침에 그 강좌올리고는 1줄 메모장을 만들었답니다..^^
보신분들도 있을거고 못보신분들도 있을건데..
현재 강좌란 메인 페이지 우측의 "소감 한말씀 올리시지요" 라는 메뉴와
FreeBoard, Q & A, Tip & Tech 란에 좌측 상단에 "Love is.." 라는 두개의 메뉴에
한줄 메모장을 링크해뒀답니다..^^
나중에 시간이 되면.. 이 메모장 만드는 강좌도 준비할게요..
에혀~ 잡담이 넘 길었네요..
이제 본론으로 들어가야지요.
PHP에서 사용하는 MySQL함수들에 대해서 알아볼려고 합니다.
수없이 많겠지만.. 현재 초보분들.. 또는 막시작하신분들.. 게시판을 만들려고 하시는분들에게
필요한 엑기스 함수에 대해서만 설명하도록 하겠습니다.
mysql_connect()
많이들 보셨을겁니다. PHP에서 쿼리문을 시작하기전에 반드시 와야만 하는 함수이죠..
디비에 연결하는 함수입니다.
사용법은 다음과 같습니다.
mysql_connect( "호스트","아뒤","비번");
이렇게 사용을 한답니다.
주로 위처럼 사용하기보다는
$connect=mysql_connect( "호스트","아뒤","비번");
이렇게 많이 사용합니다.
이유는 이러합니다. 아래의 예를 보시면 이해가 가실겁니다.
$connect=mysql_query("localhost","Mr.JH","xxxxxx");
if($connect){
echo "접속에 성공했습니다.";
}else{
echo "접속에 실패했습니다.";
}
?>
이렇게 사용을 한답니다..^__^
mysql_close()
디비와의 연결을 끊을때 사용하는 함수입니다.
뭐.. 사용방법은.. 간단합니다. 위에서 연결을 끊는다고 한다면
mysql_close($connect);
근데 꼭 이렇게 안닫아줘도.. 소스를 다 읽고나면 자동으로 디비를 닫는다고 하는데
이걸 사용하면 메모리 관리상 좋다고 하는데.. 그런 문제까지 다 따지면
제 성격으로는 이 세상 못살아갑니다.. --;;
참고로 전 이거 사용안합니다. 귀차나서..
mysql_select_db()
디비를 선택하는 함수입니다.
즉, 위에서 데이터베이스에 연결만 했지 아직 디비선택을 안했습니다.
mysql_select_db()함수를 이용해서 자신의 디비를 선택해야 합니다.
이용방법은 mysql_select_db(디비명)이렇게 사용합니다.
mysql_query
가장 중요한 함수라고 생각합니다. 가장 중요하기보다는 꼭 필요한 함수죠..
바로 쿼리를 MySQL서버로 전달해주는 함수죠..
만약에 board_mrjh라는 테이블에서 자료를 가지고 올려면 select 문을 사용해야하죠..
이 셀렉트문을 데이터베이스 서버로 전송시켜주는 역할을 하는거죠..
일반적인 사용방법은 이러합니다..
$que="select * from board_mrjh";
mysql_query($select);
이렇게 사용을 하지만 나중에 익숙해지면 그냥
$que=mysql_query("select * from board_mrjh");
이렇게 사용을 하셔도 됩니다.
자.. 지금까지는 기초적인 디비 함수였고..
이제부터는.. 중요합니다.
바로 mysql_query로 쿼리한 결과물을 브라우져에 출력시켜주는 함수입니다.
mysql_num_rows
mysql_fetch_row
mysql_fetch_array
이 세가지 함수를 잘 사용하셔야 합니다.
물론 다른 함수도 있지만.. 이 3가지 함수만 잘 사용한다면..
거의 90%이상의 작업은 다 해낼수있다고 생각합니다.
우선 mysql_num_rows부터 알아보겠습니다.
이건 쿼리문의 결과의 갯수를 출력시켜줍니다.
즉, 무슨 말이냐면.. board_mrjh라는 테이블에 no가 1~65 까지있다고 가정하면..
1부터 65까지 세면 몇개입니까?? --;; 65개죠??
바로 이말입니다.
쿼리한 결과의 갯수를 반환시켜주는 함수입니다.
예를 살짝보면 (board_mrjh테이블 속에는 100개의 자료가 있다고 가정하겠습니다.)
$que=mysql_query("select * from board_mrjh");
$total=mysql_num_rows($que);
echo $total;
이걸 브라우져 상에 출력하면.. 결과는 100입니다.
무슨말인지 아시겠죠??
이건 언제 사용하냐면.. 크게 두가지로 분류합니다.
첫번째는 게시판에서 전체글이 몇개가 있는지 알아볼때.. 사용합니다.
두번째는 비밀번호나 아이디 검사할때.. 입력한 쿼리에 해당하는 자료가 있는지
없는지를 검사합니다. 0이면.. 즉 자료가 없다면 false를 그외 1 이상이라면 true가 되겠죠..
이렇게 사용을 하게되는 첫번째의 글이 몇개있는지 사용할때는
게시판의 글수가 몇개 안될때는 별상관없겠지만..
글이 무지하게 많아진다면 좀 고려해봐야할겁니다.
그런 경우에는 mysql_num_rows()라는 함수보다는 쿼리할때
select count(필드) from 테이블
이러한 쿼리를 해줘야 할겁니다. count()라는 함수를 이용해서 해당 필드에 있는
갯수를 반환시켜주는 방법을 채택해야 할겁니다.
좀전에 제가 테스트해봤는데.. 백만개의 글이 있는 테이블에서
select count(no) from board_mrjh
라고 쿼리를 했는데.. 0.0 초가 걸리더군요..
즉, 백만개가 있어도.. 부하가 거의 안걸린다는 이야기죠..
자.. 요기까지.. mysql_num_rows를 마치고 이제 가장 중요한 두가지를 이야기 하죠..
mysql_fetch_row 와 mysql_fetch_array 는겉모습만 봐도
비슷해보이죠??
네, 맞습니다. 비슷한거 맞습니다. 사실상 해주는 일은 같습니다.
다만 사용방법이 틀릴뿐입니다.
저는 mysql_fetch_array를 사용할것을 추천하고 싶습니다.
제가 추천안해도 분명히 여러분들도 msql_fetch_arrary를 사용하게 될겁니다.
왜냐하면 그게 훨씬 편하거든요..^^
구차하게.. 지루한 책처럼 두개의 근본적인 차이나.. 설명같은건 안하겠습니다.
걍 간단하게 예로써.. 두개의 차이를 설명하겠습니다.
예)
우리는 board 라는 테이블을 가지고 있습니다.
그리고 이 board 테이블 속에는 no, name, title, memo 순으로 필드가 있습니다.
좀더 구체적으로 묘사하면..
---------------------------------------------
| no | name | title | memo |
| 1 | ole2000 | 강좌1 | 냉무--;; |
| 2 | ole2000 | 강좌2 | 냉무--;; |
| 3 | ole2000 | 강좌3 | 냉무--;; |
| 4 | ole2000 | 강좌4 | 냉무--;; |
| 5 | ole2000 | 강좌5 | 냉무--;; |
| 6 | ole2000 | 강좌6 | 냉무--;; |
| 7 | ole2000 | 강좌7 | 냉무--;; |
| 8 | ole2000 | 강좌8 | 냉무--;; |
---------------------------------------------
자!!! 제가 그림을 그린이상 게임은 끝났습니다.
이제 이해가 가죠??
이제 쿼리를 시작하겠습니다. 잘보세요!!
1) mysql_fetch_row를 이용한 쿼리
$que=mysql_query("select * from board where no='3'");
$data=mysql_fetch_row($que);
echo " no가 3인 줄에서 no는 $data[0] 이고 name은 $data[1]이고 title는 $data[2] 이며
memo는 $data[3] 입니다.";
2) mysql_fetch_array를 이용한 쿼리
$que=mysql_query("select * from board where no='3'");
$data=mysql_fetch_array($que);
echo " no가 3인 줄에서 no는 $data[no] 이고 name은 $data[name]이고 title는 $data[title] 이며
memo는 $data[memo] 입니다.";
자.. 이해가 팍팍 오시나요?? 제가 그랬죠?? 제가 그림을 그린이상 게임은 끝났다고
바로 이차이입니다.
사실 두개다 똑같이 해당필드를 배열로 가져온다는건 같습니다.
근데 mysql_fetch_row는 [0],[1] 이렇게 가져온다는거죠..
책에 의하면 (전문용어로) 인덱스를 참조한다고 하네요..
근데 우리는 책에나온.. 그런 이해하기 힘든말들과는 별로 안친합니다.
이미 우리는 두개의 차이를 명백히 이해해버렸기때문에 더이상의 설명은 필요없습니다.
이제 mysql_fetch_array를 사용하실거죠??
네.. 바로 필드명만 알고있다면.. 아주 쉽게 값을 가져올수있다는 장점이 있는거죠..
아.. 한동안 저혼자 그림그리고.. 열내서 설명했더니.. 좀 덥네요..^^
이제... 저는 또 다음 작업꺼리를 찾으러 갑니다.
여러분들도 공부 열쒸미 하세요...^^
<ㅑㅇ~~
댓글 3
-
지한돌
2002.09.14 00:53
짜파게티도 괜찮은데 ^*^ -
정재호
2004.07.30 23:32
잘 읽었습니다. ^^ 많은 도움이 됬네요. 감사합니다. -
김강산
2007.04.12 13:26
입력하신 내용중에 오타인듯한것이 있습니다
<?
$connect=mysql_query("localhost","Mr.JH","xxxxxx");
if($connect){
echo "접속에 성공했습니다.";
}else{
echo "접속에 실패했습니다.";
}
?>
이게아니라아니라
<?
$connect=mysql_connect("localhost","Mr.JH","xxxxxx");
if($connect){
echo "접속에 성공했습니다.";
}else{
echo "접속에 실패했습니다.";
}
?>
입니다... 이거찾느라 한시간 쌩고생 T.T