WordPress 的資料庫採用了 mysql 資料庫,同時 WordPress 也很好的封裝了資料庫的使用函式,從而讓開發者們能很好的應用 WordPress 的資料庫函式進行主題或者外掛開發。
WordPress 資料庫的封裝類位於 /wp-includes/wp-db.php,wp-db.php 包含了資料庫操作的具體說明,該類物件例項化的引數為 $wpdb,我們可以在模板檔案中直接使用,或者在 function 使用 global 來使其成為全域性變數。
本文將列舉幾個常見的資料庫操作函式:
- insert($table, $data, $format) — 在指定的表中插入一條資料。
- update($table, $data, $where, $format, $where_format) — 在指定的表中更新一條資料
- get_var( $query = null, $x = 0, $y = 0 ) – 查詢指定單個欄位資料
- query($query) — SQL 語句查詢
- get_results($query, $output) — 返回搜尋結果
- escape($data) — 對外掛資料庫中的資料進行轉義,使用了 addslashes() 函式
- prepare( $query, $args = null ) – 預處理 SQL 查詢語句, 使用 php 的 sprintf() 來格式化字串。
- set_prefix($prefix) — 設定資料表字首
- prepare($query) — safely prepares an SQL query for execution with sprintf()-like syntax.
- get_row($query, $output, $y) — 查詢指定行的資料,$y 預設為 0 。
- get_col($query, $x) — 查詢指定列的資料,$x 預設為 0
應用例項:
1 、插入資料
/**
* insert
*/
$wpdb->insert( $wpdb->posts, array( 'post_title' => $mytitle ) );
$wpdb->insert( $wpdb->options, array(
'option_name',
'new_option_key',
'option_value' => 'New Option Value',
'autoload' => 'yes' )
);
2 、更新資料
/**
* update
*/
$wpdb->update( $wpdb->posts, array( 'post_title' => $mytitle ),
array( 'ID' => $myid )
);
$wpdb->update( $wpdb->options,
array( 'option_value' => 'New Option Value' ),
array( 'option_name' => 'new_option_value' )
);
3 、查詢指定單個欄位資料
/**
* get_var
*/
$post_id = $wpdb->get_var(
$wpdb->prepare( "SELECT post_id FROM
$wpdb->postmeta WHERE
post_id = %d AND
meta_key = 'enclosure' AND
meta_value LIKE (%s)", $post_ID, $url . '&' )
);
$content = $wpdb->get_var(
$wpdb->prepare("SELECT post_content FROM " .
"$wpdb->posts WHERE " .
"post_title = %s AND " .
"ID = %d", $title, $id )
);
4 、執行 sql 語句,常用於刪除與更新
/** * query */ $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name = '$name'" ); $wpdb->query( "UPDATE $wpdb->posts SET post_title = '$mytitle' WHERE ID = $myid" );
5 、轉義資料
/** * query and escape */ $mytitle = $wpdb->escape( $mytitle ); $myid = absint( $myid ); $wpdb->query( "UPDATE $wpdb->posts SET post_title = '$mytitle' WHERE ID = $myid" );
6 、返回查詢結果集
/**
* get_results
*/
$type = $wpdb->get_results( "SELECT post_type FROM " .
"$wpdb->posts WHERE ID=$id" );