'php강의'에 해당되는 글 4건

  1. 2013.07.16 PHP XML DOM 구문
  2. 2013.07.12 PHP Mysql delete 구문 (2)
  3. 2013.07.03 PHP Mysql Connect(PHP 데이터베이스 연동) (4)
  4. 2013.06.04 PHP String (문자열 변수) (2)

 

이번장에서는 PHP XML DOM 파싱에 관하여 예제를 보며 포스팅하겠습니다.  

이전 포스팅에서 DOM 과 SAX 파싱에 대해서 간략 설명하였습니다.  이번장을 보기전에 우선 이전 포스팅을 본다면 더 도움이 될듯합니다.

 

DOM 은 Document Object Model 의 약자입니다.

DOM 방식은 트리 구조로 XML 문서를 변환하고 전체 문서를 읽어서 엑세스 하기때문에 메모리를 많이 사용하며 조금 무겁다고 느낄수 있습니다.

- 문서 구조 정보와 컨텐츠를 객체로 이용

- 트리에 기반한 객체를 이용함으로써 XML 문서의 구조적 변경 작업에 적합

- XML 문서를 메모리상에서 공유할수 있다는 장점이 있음

- 메모리상에 구체적인 객체 트리를 생성함

- XML 문서를 다루기 위한 복잡한 응용프로그램(브라우저, 편집기)에 적합

- 메모리 사용량이 큼

// 위 내용은 이전 포스팅에서 설명된 내용을 가져온것입니다.
DOM 의 XML 파싱은 PHP의 부분이기 때문에 어떤 특정한 파일을 설치할 필요가 없습니다.
관련예제
----- test.xml ----- (우선 test.xml 파일을 아래와 같이 생성합니다)
<?xml version="1.0" encoding="euc-kr"?>
<note>
<to>철수</to>
<from>영희</from>
<heading>헤더 부분</heading>
<body>이곳은 내용이 들어가는 부분!</body>
</note>
----- xml.php ----- (xml.php 파일을 아래와 같이 생성합니다)
<?php
 $xmlDoc = new DOMDocument(); // 새로운 객체를 생성함
 $xmlDoc->load("test.xml"); // test.xml 파일을 불러들임
 print $xmlDoc->saveXML(); // DOM Tree를 xml 문서로 변환함
 ?>
// 객체를 선언하고 xml 파일을 불러들인후 내용을 출력하는 구문입니다. 출력되는 내용은
철수 <from>영희</from> <heading>헤더 부분</heading> 이곳은 내용이 들어가는 부분!
입니다.
관련예제 2
----- test.xml -----
<?xml version="1.0" encoding="utf-8"?>
<note>
<to>Park</to>
<from>Kim</from>
<heading> header contents !! </heading>
<body> Body contents !! </body>
</note>
// XML은 utf-8을 사용하는 것이  기본 권고사항 입니다.
----- xml.php -----
<?php
 $xmlDoc = new DOMDocument();
 $xmlDoc->load("test.xml");
 $x = $xmlDoc->documentElement; // 문서의 루트 요소를 가져옴
 foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
 }
?>
// documentElement 는 그 트리의 탑-레벨입니다. 이 요소는 하나 또는 그 이상의 자식 노드(childNodes)를 가진다. 이 자식 노드는 그 트리의 가지로 보면 됩니다.

노드 인퍼페이스(Node Interface)는 XML 노드 트리의 각 요소를 읽고 쓰기 위해 사용되며, 각각의 노드를 접근하기 위해 documentElement의 childNodes 속성을 접근할 수 있습니다. 

 

// 출력문은 아래와 같습니다.
#text =
to = Park
#text =
from = Kim
#text =
heading = header contents !!
#text =
body = Body contents !!
#text =
 
// XML 에 해당하는 모든 요소를 출력합니다.
DOMDocument 클래스의 매소드
loadXML() - XML 문서를 불러온다.
saveXML() - 메모리에 올라가 있는 DOM Tree를 XML문서로 변환한다.
load() - 파일로 부터 XML문서를 불러온다.
save() - DOM Tree를 파일로 저장한다.
vaildate() - DTD를 기준으로 XML문서의 유효성을 검증한다.
schemaVaildate() - XML 스키마를 기준으로 XML 문서의 유효성을 검증한다.
schemaVaildateSource() - XML 스키마를 기준으로 XML 문서의 유효성을 검증한다.
createELement() - 새로운 앨리먼트 노드 생성
createTextNode() - 새로운 텍스트 노드 생성
createAttribute() - 새로운 속성 노드 생성
createElementNS() - 네임스페이스 영역을 갖는 앨리먼트 노드 생성
createAttributeNS() - 네임스케이스 영역을 갖는 속성 노드 생성
createComment() - 새로운 주석노드 생성
createCDATASection() - 새로운 CDATA섹션 노드를 생성한다.
getElementsByTagName() - 지정한 태그명을 갖는 앨리먼트의 노드 리스트 출력
getElementsByTagNameNS() - 특정한 네임스페이스 영역에서 지정한 태그명을 갖는 앨리먼트의 노드 리스트를 반환한다.
importNode - XML 문서에 붙일 특정노드를 가져온다.
여기까지 XML DOM 구문에 대한 설명이었으며 다음장에서는 XML SAX 구문에 대해서 알아보겠습니다. 사실 XML에 관련된 설명이 많이 부족할 수 있습니다. 제가 코딩하면서 자주 사용하지 않았기 때문이 아닐까 합니다. 설명중 오타 또는 오류가 발생되면 댓글, 쪽지 주시면 바로 수정해 놓겠습니다.

'PHP > PHP XML' 카테고리의 다른 글

PHP SimpleXML 구문  (0) 2013.07.17
PHP XML DOM 구문  (0) 2013.07.16
PHP XML(DOM,SAX) 파싱 구문  (0) 2013.07.15
Posted by 진격의 파파

댓글을 달아 주세요

 

 

이번장에서는 PHP Mysql Delete 구문에 대해서 알아보겠습니다. 

 

delete는 테이블의 데이터를 지울수 있습니다.

 

기본구문

DELETE FROM table WHERE column = 'value'

// 기본적으로 지워야할 레코드값이 어떤것인지 where 조건에 써줍니다. 만약 where 절을 생략을 하고

 

DELETE FROM table

라고 실행을 할 경우 테이블의 모든 값이 사라지게 됩니다.

 

PHP에서 어떻게 실행되는지 알아보겠습니다. mysqli_query 함수를 사용해야 하는것은 알고 계실거라 생각합니다.

 

 user_name

age 

 park

33 

 kim

34 

 song

44 

 

위와 같이 구성된 persons 테이블이 있다고 가정하고 관련예제를 만들어보겠습니다.

 

관련예제

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd","test_db");  // 데이터베이스 연결

if (mysqli_connect_errno())  {
  echo "MySQL 연결 오류 : " . mysqli_connect_error();
}

mysqli_query($conn,"DELETE FROM Persons WHERE user_name = 'song'");

// Persons테이블에서 user_name 이 song의 값을 가진 레코드를 삭제함

mysqli_close($conn);
?>

// 주석으로 설명을 달아놓았듯이 user_name 의 값중에서 song이라는 값을 가진 레코드를 삭제하라는 의미입니다. 만약 kim을 삭제하고 싶을경우 user_name = 'kim' 이라고 명령을 해주면 되겠죠.

 user_name

age 

 park

33 

 kim

34 

// persons 테이블을 살펴보면 위와같이 song의 값이 지워진것을 확인할 수 있습니다.

 

만약 테이블 자체를 삭제하고자 할 경우에는 DROP table persons 를 사용하면 됩니다. 그럼 데이터베이스에서 persons 테이블이 삭제됩니다. 그리고 위에서 설명했듯이 테이블의 내용을 지울때는 delete from persons 라고 명령하면 됩니다.

 

여기까지 PHP Mysql 데이터베이스에 관해서 포스팅을 마치고 다음 포스팅에서는 간단하게 PHP XML에 대해서 알아보겠습니다.

혹시라도 PHP 데이터베이스에 관해서 궁금한 사항이 있으면 댓글,쪽지 남겨주시면 제가 아는 한도내에서 성심껏 답변드리겠습니다.

 

그리고 중간에 오타, 오류가 발생된다면 이것도 댓글, 쪽지 남겨주시면 바로바로 수정해놓겠습니다. ^^

이렇게 미천한 글에 대해서 읽어봐주시는 방문자분들 감사합니다 ^^

 

 

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql delete 구문  (2) 2013.07.12
PHP Mysql Update 구문  (1) 2013.07.11
PHP MySQL Order By(정열) 구문  (0) 2013.07.10
PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
Posted by 진격의 파파

댓글을 달아 주세요

  1. 제로 2015.02.19 23:38  댓글주소  수정/삭제  댓글쓰기

    이렇게 친절하고 알기쉽게 알려주시다니...데이터베이스는 처음 건드리는거라 막막했는데...너무 감사합니다!

  2. 진격의 파파 2015.02.25 11:33 신고  댓글주소  수정/삭제  댓글쓰기

    넵 미흡하지만 도움이 되었기를 바랍니다. ^^

 

PHP 의 데이터베이스 연결방식은 기존방식(mysql_connect)과 PHP 5 버전의 신규방식(mysqli_connect) 이렇게 두 가지로 나뉘어 집니다.

 

 

저는 사실 기존방식으로 지금까지 코딩을 해왔는데 신규연결방식이 훨씬더 안정적이고, 빠르며, 보안이 더 잘되어 있습니다.

 

 

그래서 PHP 5 업그레이드 이후로 새로나오는 PHP 책들을 살펴보면 신규방식인 mysqli_connect 함수를 사용하여 데이터베이스를 연결하는걸 볼 수 있을 겁니다.

 

 

PHP 5 업그레이드 중에서 가장 중요한 점이 MySQLi (MySQL Improved Extension) 이 아닐까 생각합니다.

 

 

일단 기존연결 방식과 신규연결 방식 둘다 설명하겠습니다. 하지만 이제부터 PHP 를 시작하는 분들 그리고 PHP 5를 이용하는 분들 이라면 Mysqli_connect 함수를 이용하길 추천합니다.

 

 

기존연결 방식

<?
$db_host = "localhost"; // 호스트네임(IP 값으로도 가능)
$db_user = "root"; // 사용자 아이디값(root는 최상위 아이디 이며, 데이터베이스마다 별도 설정 가능합니다)
$db_passwd = "test1234"; // 사용자 비밀번호
$db_name = "test"; // 사용할 데이터베이스 이름

$conn = mysql_connect($db_host,$db_user,$db_passwd) or die ("데이터베이스 연결에 실패하였습니다!");

mysql_select_db($db_name, $conn); // DB 선택

// 데이터베이스를 연결합니다.
?>

// 보다시피 기존연결 방식은 mysql_connect를 사용합니다.

 

 

 

PHP 5 신규연결 방식

<?php
$db_host = "localhost";
$db_user = "root";
$db_passwd = "test1234";
$db_name = "test";
$conn = mysqli_connect($db_host,$db_user,$db_passwd,$db_name);

if (mysqli_connect_errno($conn)) {
echo "데이터베이스 연결 실패: " . mysqli_connect_error();
} else {
echo "성공~!!!";
}
?>

// 별다른 차이점은 없습니다. 단지 mysql_connect 함수를 쓰느냐 mysqli_connect 함수를 쓰느냐 인데 위에서 설명했듯이 속도, 보안적인 측면에서 mysqli 함수가 한수 위라 볼수 있습니다. mysqli 는 mysql에 비해 속도가 작게는 2배에서 크게는 40배까지 차이가 납니다. 그래서 PHP 5가 지원되는 플랫폼이라면 당연히 mysqli를 사용하는게 효율적이겠죠.

 

 

이번장에서는 간단하게 데이터베이스 연결에 관해서 알아보았는데, 다음장에선 PHP 코딩으로 데이터베이스 생성 및 테이블 생성에 관해 포스팅 하겠습니다.

 

 

요즘 정신이 없어서 제가 오타나 실수가 나올수 있는데 너그럽게 양해해 주시고 바로 댓글, 쪽지 주면 수정해놓겠습니다.

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
PHP 데이터베이스 및 테이블 만들기  (5) 2013.07.04
PHP Mysql Connect(PHP 데이터베이스 연동)  (4) 2013.07.03
PHP MySQL 소개  (0) 2013.07.02
Posted by 진격의 파파

댓글을 달아 주세요

  1. 인절미 2016.03.10 22:08  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ^^

  2. 인절미 2016.03.10 22:08  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ^^

  3. 초롱초롱 2016.08.29 06:59  댓글주소  수정/삭제  댓글쓰기

    감사합니다 한참을 몇시간째 헤메다 이제 막 성공했네요 ^^

  4. 오해윤 2016.11.02 03:22  댓글주소  수정/삭제  댓글쓰기

    핵심을 알려주시어 감사드립니다.

 

지난번 포스팅에선 php 변수에 대해서 알아보았습니다. 이번장에서는 조금 더 나아가 변수중에서 string에 대해서 알아보겠습니다. 흔히 문자열 변수라고 칭합니다.

문자열 변수는 직접 생성, 조작할 수 있습니다. 예를 들어 $txt 라는 변수를 만들고 내용에 "Park's의 블로그" 이렇게 내용이 출력됩니다.

<?php
$txt="Park's의 블로그";
echo $txt;
?>

문자열 변수를 할당할때 주의해야 할 점은 큰따옴표 또는 작은따옴표를 사용하여 생성합니다. 이에 대한 자세한 설명은 이전 포스팅에 있으니 참고 바랍니다.

 

 

PHP 연결 연산자

PHP에서 하나의 문자열 연산자가 있습니다.
연결 연산자 (.) 두 개의 문자열 값을 연결하는 데 사용됩니다.

아래의 예제는 두 개의 문자열 변수를 연결하는 방법을 보여줍니다.

<?php
$txt1="Park's의 블로그";
$txt2="누군가에게 도움이 되는 블로그가 되자!";
echo $txt1 . " " . $txt2;
?>

// 연결될때 ." ". 이렇게 연결됨을 알 수 있습니다.

위 구문이 출력이 되면 "Park's의 블로그 누군가에게 도움이 되는 블로그가 되자!" 이렇게 출력이 되겠죠.

만약 echo $txt1 . $txt2; // 이렇게 연결이 되었다면 "Park's의 블로그누군가에게 도움이 되는 블로그가 되자!" 처럼 출력이 되는데 틀린점을 찾으셨나요?? 바로 두 문장사이의 띄어쓰기가 있고 없고의 차이입니다. " " 는 공백값이 추가되어 연결됨을 의미합니다.

PHP strlen() 함수

strlen() 함수는 문자열의 길이를 반환하는 역할을 합니다.

<?php
echo strlen("Park's의 블로그!");
?>

위 구문을 실행하면 "16"이 나옵니다. 영어와 특수문자, 띄어쓰기등은 기본적으로 1바이트 이며, 한글은 2바이트 입니다. 그래서 위 구문의 총 문자열 길이는

p=1,

a=1,

r=1,

k=1,

'=1,

s=1,

의=2,

'띄어쓰기'=1,

블=2,

로=2,

그=2,

!=1

합이 총 16이 됩니다. strlen 함수는 문자열의 길이를 제어할때 사용하기 때문에 매우 자주 쓰이는 함수 입니다.

 

 

PHP strpos() 함수

strpos() 함수는 문자열 중에서 문자 또는 특정단어가 있는지를 검사할때 사용합니다.

특정단어가 있는지 여부를 체크하여 그 첫번째 위치의 문자위치를 반환합니다. 모든 문자열의 첫번째 시작점은 0부터 시작한다는것을 미리 알아두시기 바랍니다.

<?php
echo strpos("Park's의 블로그","로");
?>

만약 위처럼 구문이 있을경우 "로" 와 같은 단어가 있는지 없는지를 체크하여 "11" 이라는 값을 반환합니다.

p=0,

a=1,

r=2,

k=3,

'=4,

s=5,

의=6,7,

'띄어쓰기'=8,

블=9,10,

로=11,12,

그=13,14,

!=15

글자 "로" 부분의 시작점이 11인것을 알 수 있습니다. 이 함수는 해당 내용에 어떤 내용이 있는지 검사할 수 있기 때문에 저는 스팸차단 같은 소스에서 종종 사용합니다.

예제 2

<?

$categoryName = "청주,내덕동,율량동,사천동";

$searchName = "내덕동";

if(strpos($categoryName, $searchName) !== false) {

echo "$searchName 단어가 포함되어 있습니다";

} else {

echo "$searchName 단어가 없군요.";

}

?>

위의 내용은 $categoryName 에 $searchName 이 있는가 검사하는 소스입니다. 이 함수도 자주 사용되는 함수이기에 알아두시면 유용하게 사용하게 될듯합니다.

 

다음장에서는 PHP Operators(연산자 +, -, /, *) 등에 대해서 알아보겠습니다.

'PHP > PHP Basic' 카테고리의 다른 글

PHP IF ~ ELSE 문  (0) 2013.06.07
PHP 연산자  (0) 2013.06.05
PHP String (문자열 변수)  (2) 2013.06.04
PHP 변수에 대하여  (2) 2013.05.31
PHP Syntax  (0) 2013.05.30
php 소개  (0) 2013.05.29
Posted by 진격의 파파

댓글을 달아 주세요

  1. jnk 2013.07.16 13:27  댓글주소  수정/삭제  댓글쓰기

    잘 배웠습니다.
    근데 저는 왜
    <?php
    echo strlen("Park's의 블로그!";);
    ?>
    가 20이 나올까요?

  2. 진격의 파파 2013.07.16 16:12 신고  댓글주소  수정/삭제  댓글쓰기

    테스트 하다 한참 헤맸네요.
    저는 계속 16이 나와서 ^^;;

    확인해보니 jnk님의 파일 인코딩은 utf-8로 되어 있어서 그런듯 합니다.
    "한국어" 환경에서 글자 수 체크
    한글은 2byte 로 체크 됩니다.
    <?php echo strlen("한글";);?> // 4 값이 출력되며,

    "UTF-8" 환경에서 글자 수 체크
    한글은 3byte 로 체크 됩니다.
    <?php echo strlen("한글";);?> // 6 값이 출력됩니다.