wordpress数据库接口介绍 $wpdb

使用说明

请不要直接调用wpdb类中的方法。WordPress定义了$wpdb的全局变量,所以请直接调用该全局变量$wpdb的实例来操作数据库。(调用之前不要忘了声明引用全局变量$wpdb。参考globalize

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

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

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

[/pcsh]

1.在数据库上运行任务查询

这个查询函数允许你在wordpress的数据库里运行任何SQL查询。当然了,最好能利用如下的特定函数,

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

 <?php $wpdb->query('query'); ?> 

[/pcsh]

query 
(string) 你需要执行的SQL查询

此函数返回操作/查询的行或列的整数。如果出现了MySQL错误,此函数将返回 FALSE(注意: 因为 0 和 FALSE 都可能被返回, 确保你使用了正确的比较运算符:等于 == vs. 一致===)。

示例

删除属于id为13的文章的‘gargle’meta 键和值。

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$wpdb->query("
	DELETE FROM $wpdb->postmeta WHERE post_id = '13'
	AND meta_key = 'gargle'");

[/pcsh]

在WordPress中由 delete_post_meta()执行.
设置页面 Page 15 的父级页面为 7.

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$wpdb->query("
	UPDATE $wpdb->posts SET post_parent = 7
	WHERE ID = 15 AND post_status = 'static'");

[/pcsh]

 

2.选择一个变量

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->get_var('query',column_offset,row_offset); ?>

[/pcsh]

参数:

query (string) sql语句. 设为null会从之前的查询返回变量

column_offset (integer) 要获取的列,从0开始

row_offset (integer) 要获取的

行,从0开始

示例:

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $user_count = 
$wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users;"));?>  

[/pcsh]

这个sql只选出一个值,缺省的0行0列

3.选择一行

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->get_row('query', output_type, row_offset); ?>

[/pcsh]

示例

获取ID为10的链接的全部信息

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10");

[/pcsh]

$mylink对象的属性是SQL查询结果的列名(此例中是所有 $wpdb->links表中的列名)。

echo $mylink->link_id; // prints "10"

作为对比, 使用

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A);

[/pcsh]

将返回关联数组:

echo $mylink['link_id']; // prints "10"

然后

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N);

[/pcsh]

将返回索引数组:

echo $mylink[1]; // prints "10"

4.选择一列

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->get_col('query',column_offset); ?>

[/pcsh]

5.插入行

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->insert( $table, $data, $format ); ?>

[/pcsh]

示例

在一行中插入两列,第一个值为字符串,第二个为数字:

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$wpdb->insert( 'table', 
array( 'column1' => 'value1', 'column2' => 123 ), 
array( '%s', '%d' ) )

[/pcsh]

6.更新记录

更新数据库的记录。

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

 <?php $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); ?> 

[/pcsh]

示例

更新ID为1的行,第一列的值为字符串,第二列的值为数组:

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

$wpdb->update( 'table', array( 'column1' => 'value1', 'column2' => 'value2' ), 
array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) )

[/pcsh]

7.防止SQL查询注入攻击

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $sql = $wpdb->prepare( 'query' [, value_parameter, value_parameter ... ] ); ?>

[/pcsh]

8.显示和隐藏SQL错误

 

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->show_errors(); ?>
<?php $wpdb->hide_errors(); ?>
<?php $wpdb->print_error(); ?>

[/pcsh]

9.清除缓存

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php $wpdb->flush(); ?>

[/pcsh]

 

 

此处评论已关闭