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" );