sub_title
 PHP
제   목 PHP MySQL 명령어 실행 함수 mysql_query
작성자 웹마당넷 등록일 2009-01-21 02:26:26 조회수 47,228

[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 함수를 이용해서 어여쁜 테이블 하나를 만들고 있습니다.

<?php
  include("dbcon.php");

  $sql = "CREATE TABLE test_member ( ";
  $sql = $sql . " seq int not null auto_increment, ";
  $sql = $sql . " memuid varchar(20) NOT NULL, ";
  $sql = $sql . " name varchar(20) NOT NULL, ";
  $sql = $sql . " addr varchar(255) NOT NULL, ";
  $sql = $sql . " PRIMARY KEY(seq), ";
  $sql = $sql . " UNIQUE memuid (memuid) );";

  $result = mysql_query($sql) or die("SQL문 제대로 쓴거 맞아???");

  if($result) echo "테이블 Create 성공!!";
?>

다음은 위의 예제에서 생성된 test_member 테이블에 INSERT 문을 이용해서 하나의 레코드를 추가하는 예제입니다.

<?php
  include("dbcon.php");

  $memuid = "webmadang.net";
  $name = "웹마당넷";
  $addr = "어쩌시 어쩌구 어쩌동 111-11";

  $sql = "INSERT INTO test_member SET ";
  $sql = $sql . " memuid ='$memuid', ";
  $sql = $sql . " name ='$name', ";
  $sql = $sql . " addr ='$addr' ";

  $result = mysql_query($sql) or die("또 틀리면 죽는다!!!");
  $rows = mysql_affected_rows();

  if($result) echo "INSERT로 입력된 레코드의 갯수는:$rows";
?>

MySQL에게 전달된 SQL 명령어가 INSERT, UPDATE, DELETE, DROP 등이라면 mysql_query 함수의 실행결과가 참일때 TRUE를 반환하게 되며 mysql_affected_rows 함수를 이용해서 변경된 레코드의 갯수를 알수 있습니다. 위의 예제가 성공하게 되면 "INSERT로 입력된 레코드의 갯수는:1" 이라는 문자열이 출력됩니다.

아래 예제는 SELECT 문을 이용해서 위의 예제에서 입력된 레코드를 화면에 출력하게 됩니다.

<?php
  include("dbcon.php");

  $sql = "SELECT memuid, name, addr FROM test_member ";

  $result = mysql_query($sql) or die("제대로 좀 써봐!!!");
  while($row = mysql_fetch_row($result))
     echo"'$row[0]' '$row[1]' '$row[2]'<br>\n";
?>

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 함수로 바꿔 사용했습니다.

<?php
  include("dbcon.php");


  $sql = "SELECT memuid, name, addr FROM test_member ";

  $result = mysql_query($sql) or die("제대로 좀 써봐!!!");
  while($row = mysql_fetch_array($result)){
    echo"'$row[memuid]' '$row[name]' '$row[addr]'<br>\n";
    echo"'$row[0]' '$row[1]' '$row[2]'<br>\n";
  }
?>

위의 예제에서 보이듯이 mysql_fetch_array 함수는 컬럼의 값을 가져올때 컬럼명이든 컬럼의 번호든 상관없습니다.

마지막으로 MySQL 테이블에서 레코드셋이 아닌 단 한개의 데이터만 가져올수 있는 mysql_result 함수가 있습니다.
아래는 mysql_result 함수의 사용예제입니다.

<?php
   include("dbcon.php");


   $sql = "SELECT memuid, name, addr FROM test_member ";

   $result = mysql_query($sql) or die("제대로 좀 써봐!!!");
   echo mysql_result($result,0,0)."<br>\n";
   echo mysql_result($result,0,1)."<br>\n";;
   echo mysql_result($result,0,2)."<br>\n";;

?>

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 파일의 내용은 다음과 같을 것입니다.

<?php
  $hostname = "localhost"; // 호스트를 식별할 수 있는 호스트명이나 ip
  $user = "myuser"; // MySQL에서 사용할 데이터베이스 사용자명
  $password = "********"; // MySQL에서 사용할 데이터베이스에 접속하기 비밀번호
  $database = "testdb"; // MySQL에서 사용할 데이타베이스명
  $connect = mysql_connect ($hostname, $user, $password) or die ("데이터베이스 접속실패");;
  mysql_select_db ($database, $connect);
?>



작성자: 웹마당넷(webmadang@webmadang.net)   http://www.webmadang.net
 
1
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
55  PHP - 파일다운로드 함수   member 오렌지 0 / 0 12941 2009-03-07
54  fsockopen 함수를 이용해서 웹사이트에 데이터 전송하기   member 높이뜬새 2 / 0 11593 2009-03-06
53  PHP - 웹사이트의 유효성 체크   member 오렌지 0 / 0 7964 2009-02-28
52  PHP 현재 페이지의 도메인명이나 url등의 정보 알아오기   member 높이뜬새 6 / 0 108284 2009-02-27
51  PHP 파일 한줄 읽기(fgets함수)   admin 웹마당넷 0 / 0 32677 2009-02-24
50  PHP 파일 내용 읽기(fread함수)   admin 웹마당넷 3 / 0 27189 2009-02-15
49  PHP 파일 시스템(File System) 다루기 #1   admin 웹마당넷 0 / 0 21355 2009-02-14
48  PHP 썸네일(Thumbnail) 이미지 만들기 함수 첨부파일   member 티란투라 0 / 0 10646 2009-02-08
47  PHP - xml 읽어들이기(read) 클래스   member 오렌지 0 / 0 9398 2009-02-08
46  PHP와 자바스크립트를 이용한 드롭다운 메뉴 첨부파일   member 오렌지 0 / 0 11844 2009-02-07
45  PHP로 MySQL 데이터베이스 만들기(생성하기)   admin 웹마당넷 1 / 0 10408 2009-01-24
44  PHP MySQL 명령어 실행 함수 mysql_query   admin 웹마당넷 1 / 0 47228 2009-01-21
43  PHP 에러 처리 함수 die   admin 웹마당넷 4 / 0 41735 2009-01-20
42  PHP no-cache 설정(뒤로가기 막기)   admin 웹마당넷 1 / 0 31224 2009-01-17
41  PHP 폼(form)값의 유효성 체크   admin 운영자 0 / 0 9770 2009-01-13
40  PHP - SELECT로 반환된 레코드 갯수와 컬럼의 갯수를 알려주는 함수   admin 웹마당넷 0 / 0 18910 2009-01-11
39  PHP 버전 확인하기   admin 웹마당넷 0 / 0 13007 2009-01-06
38  PHP 한글 문자열 자르기   admin 웹마당넷 0 / 0 11834 2008-12-27
37  PHP 오늘날짜를 기준으로 이전,이후 날짜구하기   admin 웹마당넷 0 / 1 15208 2008-12-25
36  PHP 이름이 같은 폼태그(Form Tag)의 값(value) 처리하기   admin 웹마당넷 0 / 0 33195 2008-12-06
35  PHP split 함수를 이용한 문자열 분리   admin 웹마당넷 1 / 0 52818 2008-12-06
34  PHP explode 함수를 이용한 문자열 분리   admin 웹마당넷 0 / 0 11565 2008-12-01
33  PHP 달력(Calendar) 입니다. 이미지  [1] member 티란투라 0 / 0 11330 2008-11-16
32  플래쉬 무비클립을 캡쳐하는 PHP 소스 입니다. 첨부파일   member 사라마음 0 / 0 7103 2008-11-14
31  PHP에서 세션(session) 사용하기   member 웹스톤 0 / 0 14094 2008-08-31
write
button [1] [3] [4] button