wordpress数据库操作类wpdb

十度 wordpress 2015年12月20日 收藏

$wpdb介绍

我们在进行wordpress二次开发或者wordpress插件开发过程中经常需要对数据库进行操作,那么wordpress如何对数据库进行操作了,wordpress操作数据库的方法是什么呢?其实wordpress有个全局的操作类——$wpdb,使用$wpdb可以让我们轻松的对wordpress的数据库进行操作。

$wpdb应用

WordPress定义了$wpdb的全局变量,所以可以直接调用该全局变量$wpdb的实例来操作数据库。
$wpdb对象可以用来操作WordPress数据库中的每一个表,不仅仅是WordPress自动创建的基本表。例如,你有一个自定义的表叫做mytable,那么可以使用如下语句来查询:

 global $wpdb;
 $myrows = $wpdb->get_results( "SELECT id, name FROM mytable" );

$wpdb对象可以读取多个表,但是其只针对WordPress的数据库。如果你需要连接其他数据库,那么你应该使用你自己的数据库连接信息,并调用wpdb类来创建一个你自己的数据库操作实例。如果你有多个数据库需要连接,那么你可以考虑使用hyperdb来替代$wpdb。

如果想直接使用WP里封装的数据库操作的类(wp-db.php),将wp-blog-header.php包含到代码中就可以使用了。

define('PATH', dirname(dirname(__FILE__)).'/');
require_once(PATH . '../wp-blog-header.php');
global $wpdb;

插入数据时,其中一种方法是使用wp-db类中的insert()函数。

$table = "test_table";
$data_array = array(
        'column_1′ => 'data1′,
        'column_2′ => 'data2′
);
$wpdb->insert($table,$data_array);

第一个参数是数据库表中的名字,第二个参数是要插入的数据,是一个数组。数组中的key的名字就是表中的列名。其实insert()函数还有第三个参数
format,感兴趣的朋友可以在wp-db.php的方法定义里看看。

更新数据时,可以用update()函数,例如:

$table = "test_table";
$data_array = array(
        'column_1′ => 'new_data1′
);
$where_clause = array(
        'column_2′ => 'data2′
);
$wpdb->update($table,$data_array,$where_clause);

要从数据库中取数据,也有很多种方法,其中一种如下:

$querystr = "SELECT column_1 FROM test_table";
$results = $wpdb->get_results($querystr);
$i=0;
while ($i< count($results)){
echo $results[$i]->column_1."<br />";
$i++;
}

$wpdb方法说明

$wpdb是一个全局变量,包含多个关于数据库查询函数:

$wpdb -> get_results('query');
$wpdb->query('query');
$wpdb->get_var('query',column_offset,row_offset);
$wpdb->get_row('query', output_type, row_offset);
$wpdb->get_col('query',column_offset);
$wpdb->get_results('query', output_type);
$wpdb->insert( $table, $data, $format );
$wpdb->update( $table, $data, $where, $format = null, $where_format = null );
$wpdb->prepare( 'query' [, value_parameter, value_parameter ... ] );
$wpdb->show_errors();
$wpdb->hide_errors();
$wpdb->print_error();
$wpdb->get_col_info('type', offset);
$wpdb->flush();

参考手册:http://codex.wordpress.org/Function_Reference/wpdb_Class