Microsoft Word - php14.doc

Similar documents
PowerPoint 프레젠테이션

Microsoft PowerPoint MySQL 연동.ppt

Discrete Mathematics

쉽게 풀어쓴 C 프로그래밊

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Microsoft PowerPoint - 10Àå.ppt

10.ppt

강의 개요

MySQL-Ch05

DBMS & SQL Server Installation Database Laboratory

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

PowerPoint 프레젠테이션

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

Microsoft PowerPoint Python-DB

문서 템플릿

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

PowerPoint Presentation

PHP & ASP

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

MySQL-.. 1

Microsoft PowerPoint 웹 연동 기술.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

윈도우시스템프로그래밍

빅데이터분산컴퓨팅-5-수정

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Template

chap 5: Trees

MySQL-Ch10

PowerPoint Presentation

PowerPoint Template

歯sql_tuning2

1\) Login이 안되요1\(Access denied\)

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

금오공대 컴퓨터공학전공 강의자료

PowerPoint Presentation

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Spring Data JPA Many To Many 양방향 관계 예제

Microsoft PowerPoint 세션.ppt

13주-14주proc.PDF

5장 SQL 언어 Part II

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

TITLE

sms_SQL.hwp

C++ Programming

메뉴얼41페이지-2

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

RHEV 2.2 인증서 만료 확인 및 갱신

C 언어 프로그래밊 과제 풀이

Tcl의 문법

Microsoft PowerPoint - PHP.ppt [호환 모드]

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Visual Basic 반복문

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

NoSQL

Microsoft PowerPoint Python-WebDB

제목 레이아웃

ALTIBASE HDB Patch Notes

Microsoft PowerPoint - chap06-1Array.ppt

게시판 스팸 실시간 차단 시스템

PowerPoint 프레젠테이션

FileMaker 15 ODBC 및 JDBC 설명서

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Windows Server 2012

Microsoft PowerPoint - Java7.pptx

Tablespace On-Offline 테이블스페이스 온라인/오프라인

2 노드

슬라이드 1

PowerPoint Presentation

강의 개요

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint 프레젠테이션

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft Word - src.doc

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

SQL

Microsoft PowerPoint - 27.pptx

FileMaker ODBC 및 JDBC 가이드

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

금오공대 컴퓨터공학전공 강의자료

설계란 무엇인가?

C++ Programming

윈도우즈프로그래밍(1)

Observational Determinism for Concurrent Program Security

금오공대 컴퓨터공학전공 강의자료

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

Windows 8에서 BioStar 1 설치하기

Transcription:

14 단원 DB 연동에필요한함수익히기 1. 주요 MySQL API 개념익히기 2. 실습하기 1/10

1. 주요 MySQL API 개념익히기 지금부터우리는 PHP에서지원하는 MySQL API에대해서공부해봅시다. 우선 API란무엇인가에대해서알아봅시다. API [application programming interface] 의약자를 API라고부릅니다. 소프트웨어애플리케이션을개발하기위한여러가지함수의집합이나, 운영체제나 C, C++, Pascal 등과같은언어에서지원되는함수의집합을일컬어서 API라고합니다. MySQL 프로그래밍인터페이스 (API) 는 msql에대한 C API의상위집합으로, 1994년 David Hughes에의해서개발되었습니다. 이제부터본격적으로많이사용되는 API에대해서익혀보기로합시다. 이것보다더많은 API가제공되지만, 우리는많이사용하는부분만을다루어볼것입니다. 그러니여러분들은나머지것들도무엇있는지사이트에가셔서참고하시기바랍니다. mysql_connect ( [string host [,string username [,string userpass]]] ) : MySQL 서버에접속시사용되는함수입니다. Host : 서버의경로를의미합니다. 보통 localhost라고씁니다. Username : 데이터베이스에접근가능한계정입니다. Userpass : 접근가능한계정이가진비밀번호입니다. 접속에성공하면접속상태를, 그렇지않으면에러메시지를반환한다. mysql_connect() 을이용하여 MySQL 서버에접속을할수있습니다. 함수이름앞에 '@' 를붙임으로써에러메시지가출력되지않도록할수도있습니다. or die (" 접속할수없습니다 "); print (" 접속되었습니다 "); mysql_close ($conn); 이예제에서 or die() 구문은함수가 mysql_connect 함수의결과가 false인경우에수행되는것이며, die함수는해당메시지를출력한후에서버와의연결을끊게됩니다. 2/10

- mysql_query(string query [, int link_identifier]): 주어진쿼리문을실행합니다. link identifier는 MySQL과접속링크로만약지정되지않는다면, 함수는 MySQL 서버에서접속된링크를찾아대체합니다. mysql_query() 는현재서버에서동작중인데이터베이스로부터특정질의문을전송합니다. mysql_query() 함수는질의성공여부에따라 TRUE(0이아닌값 ) 또는 FALSE를반환합니다. 서버로부터실행된질의가실행되고그질의문에문제가없어야만, TRUE값을반환한다. $result = mysql_query ("SELECT * from test") or die (" 잘못된질의를실행했습니다!!"); - mysql_select_db ( string database_name [, int link_identifier]) : MySQL 데이터베이스를선택합니다. Mysql 데이타베이스를선택합니다. 성공하면 True, 실패하면 False를돌려줍니다. mysql_select_db("myuser", $conn); $result = mysql_query("select * from bbs", $conn); - mysql_db_query ( string database, string query [, int link_identifier]) : MySQL 질의문을전송합니다. 주어진 database내에서 query를실행합니다. 성공하면 True를실패하면 False를돌려줍니다. mysql_select_db("myuser", $conn); $query = "select id from tablename"; mysql_query($query, $conn); - mysql_result ( int result, int row [, mixed field]) : mysql_query의결과인 result에서 row번째레코드에서자료를가져옵니다. field는필드의 offset이나필드명을사용할수있습니다. $result = mysql_query("select * from tablename", $conn); $no = mysql_result($reuslt, 0, 0); // $no = mysql_result($result, 0, "no"); // 위문장과동일한결과 3/10

위예제는 0 번째레코드의 no 필드를구하는것입니다. - mysql_affected_rows([int link_identifier]) : 최근 MySQL 작업으로처리된행 (row) 개수를얻을때사용되는함수입니다. mysql_affected_rows() 는접속되어있는서버에서최근실행된 INSERT, UPDATE, DELETE 질의로처리된행의개수를돌려줍니다. 마지막질의가 WHERE 절이없는 DELETE 질의라면, 테이블의모든레코드가삭제되어 0값을돌려줍니다. 이함수는 SELECT 문에는동작하지않으며, 레코드가수정되는경우에만동작합니다. mysql_select_db("myuser", $conn); $result = mysql_query("select * from tablename", $conn); $num = mysql_affected_rows($conn); - mysql_close([int link_identifier]) : MySQL 접속을닫을때사용하는함수입니다. 성공하면 TRUE값을실패하면 FALSE값을반환합니다. mysql_close() 는비영구적으로열려진링크에서는일반적으로스크립트 (script) 실행마지막부분에서자동으로종료되기때문에생략가능합니다. 여기서사용하는각함수예제에서도이구문을생략하고있습니다. or die (" 접속할수없습니다 "); print (" 접속되었습니다 "); mysql_close ($conn); - mysql_create_db( string database name [, int link_identifier]) : MySQL 데이터베이스를생성합니다. or die (" 접속할수없습니다 "); if (mysql_create_db ("my_db")) { print (" 데이터베이스를생성하였습니다 "); else { printf (" 데이터베이스생성에러 "); 4/10

- mysql_db_name( int result, int row [, mixed field]) : 데이터베이스명을가져옵니다. - mysql_drop_db( string database_name [, int link_identifier]) : MySQL 데이터베이스를삭제합니다. 성공하면 TRUE, 실패하면 FALSE를반환합니다. $dblist = mysql_list_dbs($dbname) $i=0 while( $name = mysql_db_name($dblist, $i)) { if( $name == "mydb" ) { $foundit = true; mysql_drop_db("mydb",$dbname) $i++; 이예제는 MySQL 서버에있는모든데이터베이스를불러와서 mydb{ 마이디비 데이터베이스를삭제하는기능을수행합니다. 여기서사용된 mysql_list_dbs { 마이에스큐엘리스트디비에스 함수는 MySQL 서버에있는데이터베이스이름을반환하는기능을합니다. - mysql_errno( [int link_identifier]) : 최근 MySQL 작업으로발생한에러번호를반환합니다. - mysql_error( [int link_identifier]) : 최근실행된 MySQL 작업으로발생한에러메시지를반환합니다. mysql_connect (host, username, userpass); echo mysql_errno().": ".mysql_error()."<br>"; mysql_select_db("dbname"); echo mysql_errno().": ".mysql_error()."<br>"; $conn = mysql_query("select * FROM tablename"); echo mysql_errno().": ".mysql_error()."<br>"; 5/10

- mysql_fetch_array ( int result [, int result_type]) : 결과를필드이름색인또는숫자색인으로된배열로반환합니다. 예를들어다음과같은 test 라는테이블이있다고하면, no id Name 1 id01 홍길동 2 id02 유관순 $query = "SELECT * FROM test WHERE no=1"; $result = mysql_query($query, $connect); $row = mysql_fetch_array($result); 의결과는다음과같은배열로저장이됩니다. $row[no] => 1 $row[id] => id01 $row[name] => 홍길동 - mysql_fetch_field ( int result [, int field_offset]) : 결과로부터열정보를얻어서객체로반환합니다. < 객체의속성 > name - column의이름 table - 현제 column이속해있는테이블이름 max_length - column의최대길이 not_null - column이 null이될수없으면 1 primary_key - column이 primary key면 1 unique_key - column이 unique key면 1 multiple_key - column이 non-unique key면 1 numeric - column이숫자형이면 1 blob - column이 blob형이면 1 type - column의형태 unsiged - column이 unsiged형태이면 1 zerofill - column이 0으로채워져있으면 1 $db = mysql_connect("localhost", username", "userpasswd"); mysql_select_db("test_db", $db); $query = "SELECT * FROM test_db"; 6/10

$mysql_result = mysql_db_query("test_db", $query, $db); while($field = mysql_fetch_field($mysql_result)) { print ("<br>".$field->name); // 열의이름 print ("<br>".$field->table); // 열을가져온테이블이름 print ("<br>".$field->max_length); // 열의최대길이 print ("<br>".$field->not_null); //1( 열이 null로안될경우 ) print ("<br>".$field->primary_key); //1( 열이기본키인경우 ) print ("<br>".$field->unique_key); //1( 열이유일키인경우 ) print ("<br>".$field->multiple_key); //1( 열이 non-unique 키인경우 ) print ("<br>".$field->numeric); //1( 열이숫자인경우 ) print ("<br>".$field->blob); //1( 열이 BLOB인경우 ) print ("<br>".$field->type); // 열의형식 print ("<br>".$field->unsigned); //1( 열이 unsigned인경우 ) print ("<br>".$field->zerofill); //1( 열이 zero-filled인경우 ) mysql_close($db); 이예제는 test_db 테이블의필드정보를출력하는기능을수행합니다. - mysql_fetch_row ( int result) : 결과를숫자색인으로된배열로반환합니다. 쿼리결과 result에서하나의레코드를일반배열의형태로가져온다. 함수실행후 result의내부포인트가증가합니다. 더이상가져올값이없으면 False를돌려줍니다. $conn = mysql_connect (host, username, userpass); mysql_select_db("dbname", $conn); $result = mysql_query("select * from tablename", $conn); mysql_close($conn); while($test = mysql_fetch_row( $result ) ) { echo $test[0]. $test[1]. $test[2]. "<br>"; - mysql_field_name ( int result, int field_index) : 결과로부터특정필드명을반환합니다. 7/10

mysql_field_name() 은특정필드색인값을얻습니다. field_index는 0부터시작하는값입니다. $link = mysql_connect (host, username, userpass) or die (" 접속할수없습니다 "); $res = mysql_db_query("dbname", "select * from tablename", $link); echo mysql_field_name($res, 0). "<br>"; echo mysql_field_name($res, 2); - mysql_field_type ( int result, int field_offset) : 결과로부터필드의데이터형을반환합니다. - mysql_insert_id ( [int link_identifier]) : 최근 INSERT 작업으로부터생성된값을반환합니다. mysql_insert_id() 는이전질의가 AUTO_INCREMENT값으로생성되지않으면, 0을반환합니다. 마지막으로저장된값이필요하다면, 질의로값을추가한직후 mysql_insert_id() 를사용하면됩니다. - mysql_list_tables ( string database [, int link_identifier]) : MySQL 데이터베이스에있는테이블목록을반환합니다. - mysql_num_fields ( int result) : 결과로부터필드개수를반환합니다. 주어진쿼리결과 result내의필드개수를돌려줍니다. - mysql_num_rows ( int result) : 결과로부터행개수를반환합니다쿼리결과 result의전체레코드수를구할수있습니다. SELECT문에대한결과에만사용할수있습니다. $result = mysql_result("select * from test", $conn); $rows = mysql_num_rows($result); echo $rows; - mysql_pconnect ( [string hostname [, string username [, string password]]]) : MySQL 서버와영구적인데이터베이스접속성공시에는지속적연결 id를실패시에는 False를돌려줍니다. mysql_connect() 함수가사용되는모든곳에대체하여사용될수있으나 mysql_connect() 함수와다른점은크게두가지가있습니다. 첫째는같은호스트, 유저, 패스워드로이미열려져있는연결이있는지확인해셔있으면먼저열려진연결 8/10

id를돌려줍니다. 둘째는연결상태는스크립크가끝날때닫히지만나중에다시쓸때를위해서 id는남습니다. 주의사항은 mysql_pconnect() 함수로열려진지속적인연결이많을경우 mysql 서버에부하를주게되어전체적인성능과속도가저하될수있습니다. - mysql_tablename ( int result, int i) : 테이블의이름을불러옵니다. 2. 실습하기 지금부터실습을해보도록하겠습니다. 디비에접속해서접속한계정의데이터베이스안에어떤테이블이있는지테이블목록을반환해오며, 그테이블중에하나를택해서레코드들을가져오는프로그램을작성해보도록하겠습니다 $db = mysql_select_db("myuser", $conn); If($db){ $result = mysql_list_tables ("myuser"); $i = 0; while ($i < mysql_num_rows ($result)) { $tablenames[$i] = mysql_tablename ($result, $i); echo $tablenames[$i]. "<BR>"; $i++; $query=mysql_query("select * from bbs order by idx"); while($array=mysql_fetch_array($query)){ echo $array[name]. "-".$array[title]. "<br>"; else{ echo (" 데이터베이스가선택되지않았습니다 "); mysql_connect(host,user,password) 함수를이용해서데이터베이스에접속을시도합니다. 9/10

localhost는데이터베이스랑소스코드가같은컴퓨터에있는경우에는 host 자체를내컴퓨터인 localhost로잡습니다. myuser는데이터베이스등록시킨계정입니다. 그리고 mypasswd는그계정의비밀번호입니다그정보를변수 $conn에담습니다. 그리고 mysql_select_db() 함수는 myuser라는디비를아까접속정보를저장한 $conn으로사용하겠다른의미입니다. 그정보를이번에는 $db라는변수에담게됩니다. $db변수에는접속이성공하면 true, 접속이실패하면 false를반환합니다. 조건식 if에 $db변수에지정된값을넣어서성공이면 if문구절이실행되도록그렇지않다면 else 구문이실행되도록나누어놓은것입니다. if문구절을보시면 myuser디비안에있는테이블목록을불러옵니다. 그리고 while() 문에서목록이끝을만날때까지테이블의이름을불러옵니다. 그리고그뒤로나오는구문은테이블에있는내용을가져올때쓰는문구입니다 $query=mysql_query("select * from bbs order by idx"); select는 SQL질의어로서 db에서적용되는언어입니다. 우리는이언어를사용해서디비의내용을가져와야하는데, php에서는그언어를바로사용할수없기때문에, api를이용해서내용을가져오게됩니다. bbs 테이블의있는모든내용을 idx칼럼의오름차순대로가져오라는명령이구요, 이명령을실행시키는것이 mysql_query() 입니다. 그정보를 $query 변수에담은다음, mysql_fetch_array() 라는함수를이용해서 $query 변수에담긴내용을배열로받습니다. 그배열의이름이 $array이구요, 값을찍어낼때배열모양으로 echo() 함수를이용해서찍어내시면됩니다. 웹에서한줄띄어쓰기는 <br> 이기때문에그문구를사용했습니다. echo $array[name]. "-".$array[title]. "<br>"; 그리고 $conn 계정으로디비가제대로선택되지못했다면 else구문인아래와같은글을 echo() 라는함수를통해찍어낼겁니다. " 데이터베이스가선택되지않았습니다 " 10/10