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]
最后更新于 2017-03-17 15:58:08 并被添加「」标签,已有 690 位童鞋阅读过。
此处评论已关闭