2015. 3. 7. 00:01ㆍEtc/Wordpress
워드프레스 데이터베이스 클래스
워드프레스에는 디비를 직접 다룰 수 있는 메소드 함수를 가진 객체 클래스가 있다. 이 디비 클래스를 wpdb 라고 부르며 , 해당 클래스는 wp-includes/wp-db.php 내에 있다. wpdb 클래스를 사용하려면 반드시 $wpdb를 전역변수로 정의해 둔 다음, 호출해야 한다.
호출 방식은 다음과 같다.
global $wpdb;
wpdb 클래스의 함수 중 가장 중요한 것이 prepare 함수이다. 이는 웹사이트에 대한 SQL 인젝션 공격을 예방하는 데 꼭 필요하다.
( prepare 함수를 통해 쿼리의 변수에 escape 문자열을 추가한다.
다음 예제를 살펴보자.
<?php
$field_key = "address";
$field_value = "123 Elm St";
$wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->my_custom_table ( id, field_key, field_value ) VALUES ( %d, %s, %s )",1,$field_key,$field_value));
?>
prepare 사용시 쿼리에 사용되는 변수를 모두 %s, %d 로 대체해야한다.
복합 데이터베이스 작업
전체 테이블 열을 검색하려면 get_row 함수를 이용해야 한다. get_row 함수는 데이터를 반환할 때 객체나 연관배열, 수치색인배열등이 가능하다.
다음과 같이 사용한다.
<?php
$thepost = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE ID = 1" ),ARRAY_A);
print_r($thepost);
?>
여기서 ARRAY_A 매개변수를 사용함으로써 포스트 데이터가 연관배열로 반환된다. 만일 ARRAY_N 을 사용하면 수치색인배열로 반환된다. 만일, 데이터베이스에서 다중열을 가져올때 get_results 함수를 사용해야한다. 이때, 해당 함수가 리턴하는 형식은 배열이다.
데이터 추가
워드프레스 데이터베이스 클래스에는 INSERT 전용함수가 존재한다. 다음의 예를 통해 알아보자.
$wpdb->insert( $table, $data );
<?php
$newvalueOne = 'Hello World';
$newvalueTwo = 'This is my data';
$wpdb->insert($wpdb->my_custom_table,array( 'field_one' = > $newvalueOne, 'field_tow' => $newvalueTwo ) );
?>
다음과 같이 배열안에 어떤 값을 어떻게 넣을지 셋팅을 해준다.
데이터 수정
워드프레스 데이터베이스 클래스에는 UPDATE 전용함수도 존재한다. 다음의 예를 통해 알아보자.
$wpdb->update( $table, $data, $where);
<?php
$newtitle = 'My updated post title';
$newcontent = 'My new content';
$my_id = 1;
$wpdb->update($wpdb->posts,array('post_title' => $newtitle, 'post_content' => $newcontent),array('ID'=>$my_id));
?>
에러 처리
쿼리를 처리할 때 어떤 에러가 발생했는지 확인하는 것은 매우 중요하다. 다음은 SQL 문의 에러를 확인하는 예제이다.
<?php
$wpdb->show_errors();
$liveposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts_FAKE WHERE post_status = 'publish'"));
$wpdb->print_error();
?>
쿼리 실행전에 show_errors(); 를 호출해주고 쿼리 실행 후에 print_error(); 를 호출한다.
만일, 에러를 표시 안하려면 hide_errors(); 를 해주면 된다. 캐시된 쿼리 결과를 삭제 할경우에는 $wpdb->flush() 함수를 호출한다.
위를 통해 우리는 워드프레스의 데이터베이스를 직접 조작할 수 있다.
워드프레스에 대한 기초 설명은 여기까지 하도록 하겠습니다. 추가적인 질문은 댓글달아주세요
(_ _)
'Etc > Wordpress' 카테고리의 다른 글
[Wordpress] 루프 (0) | 2015.03.05 |
---|---|
[Wordpress] 코어 분석 (0) | 2015.03.05 |
[Wordpress] wp-config 파일 (0) | 2015.03.02 |