文档章节

WordPress数据库操作函数详解

郭奕峰
 郭奕峰
发布于 2015/05/29 10:10
字数 1267
阅读 914
收藏 4

通过这个$wpdb对象,我们可以对WordPress数据库进行任何操作,包括建表、查询、删除、更新等。要注意的是,如果要在自定义函数中使用$wpdb,必须先将其全局化(global $wpdb;)。

下面就详细介绍一下WordPress的数据库操作函数:

1、function query($query)

这个函数是最基本的数据库操作函数,$query为SQL语句,提交给数据库执行,结果分两种情况:

1). 如果是“insert|delete|update|replace”, 返回受影响行数,在“insert|replace”这种情况下,该函数会用$this->insert_id记录下新插入的ID。

2). 如果是“select”,该函数会用$this->last_result记录下查询到结果集,返回查询到的记录行数。

如果出错,则返回FALSE。

实例:

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

2、function escape($data)

使用反斜线引用数据,也就是使用魔术引号。

实例:

<?php
$name = $wpdb->escape($name);
$email = $wpdb->escape($email);
$wpdb->query("INSERT INTO myusers (id, name, email) VALUES (NULL, '$name', '$email')");
?>

3、function insert($table, $data, $format = null)

这是插入记录函数,第一个参数是表的字段数组,第二个是数据数组,第三个用于规定$data中每个值的数据类型。插入数据返回1,否则为0。

实例:

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

4、function update($table, $data, $where, $format = null, $where_format = null)

这是更新记录函数,第一个参数是表的字段数组,第二个是数据数组,第三个是条件数组,第四个和第五个分别用于规定$data和$where中每个值的数据类型。更新了为1,否则为0。

实例:

<?php
$wpdb->update( 
    'table', 
    array( 
        'column1' => 'value1',  // string
        'column2' => 'value2'   // integer (number) 
    ), 
    array( 'ID' => 1 ), 
    array( 
        '%s',   // value1
        '%d'    // value2
    ), 
    array( '%d' ) 
);
?>

5、function get_var($query = null, $x = 0, $y = 0)

这个函数只返回一个值,默认是第0行第0列。如果$query不为空,首先执行查询,如果$query为空的话,则表示从cache中选出;然后返回第X列第Y行的值。

实例:

<?php
$user_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->users;" ) );
echo "<p>User count is {$user_count}</p>";
?>

6、function get_row($query = null, $output = OBJECT, $y = 0)

返回一行,$output指定返回的类型,可以是ARRAY_A(关联数组)、ARRAY_N(数字数组)或者OBJECT(对象)。$y指定第几行。

实例:

默认情况下,$output的值为OBJECT,那么用法如下:

<?php
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10");
echo $mylink->link_id; // prints "10"
?>

如果$output的值为ARRAY_A,那么用法如下:

<?php
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10",ARRAY_A);
echo $mylink['link_id']; // prints "10"
?>

如果$output的值为ARRAY_N,那么用法如下:

<?php
$mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10",ARRAY_N);
echo $mylink[1]; // prints "10"
?>

7、function get_col($query = null, $x = 0)

返回一列,$x指定第几列。

实例:

<?php
$names = $wpdb->get_col("SELECT name, email FROM myusers", 0)
foreach ( $names as $name ) {
    echo $name;
}
?>

8、function get_results($query = null, $output = OBJECT)

返回查询的结果集,允许以ARRAY_A、ARRAY_N或者OBJECT三种方式返回。

实例:

<?php
$fivesdrafts = $wpdb->get_results( 
    "
    SELECT ID, post_title 
    FROM $wpdb->posts
    WHERE post_status = 'draft' 
        AND post_author = 5
    "
);

foreach ( $fivesdrafts as $fivesdraft ) 
{
    echo $fivesdraft->post_title;
}
?>

9、function get_col_info($info_type = 'name', $col_offset = -1)

返回字段信息。

实例:

<?php
$col_name = $wpdb->get_col_info('name', 0);
echo $col_name;
?>

10、function prepare($query = null)

这是一个可变参数函数,即函数的参数个数不确定。$query为SQL语句,其中可以包含像%s和%d这样的占位符,其它所有非占位符里面的%都要使用%%来代替。由于SQL语句中可能含有像单引号、双引号这样的特殊字符,如果不进行处理就直接提交给数据库,可能会导致错误或者出现安全问题。为此,我们可以通过prepare函数来对SQL语句进行预处理。其实该函数的用法非常简单,就跟C语言中的sprintf()和vsprintf()函数差不多。

用法:

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

实例:

<?php
$metakey    = "Harriet's Adages";
$metavalue  = "WordPress' database interface is like Sunday Morning: Easy.";

$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO $wpdb->postmeta
        ( post_id, meta_key, meta_value )
        VALUES ( %d, %s, %s )
    ", 
    10, 
    $metakey, 
    $metavalue 
) );
?>

当然,还有一些不常使用的函数,这里就不详细介绍了。另外还有两个常量:SAVEQUERIES和WP_DEBUG。设置SAVEQUERIES常量为TRUE,可以把在数据库里执行的所有查询及其停止时间保存到$this->queries这个数组中,以后调试的时候可以使用;而设置WP_DEBUG常量为TRUE,则可以输出错误。不过,这两个常量开关默认都没有打开,我们在测试的时候,可以在wp_config.php文件中将其开启。


本文转载自:http://www.3lian.com/edu/2013/07-08/79309.html

郭奕峰
粉丝 3
博文 23
码字总数 4240
作品 0
海淀
程序员
私信 提问
WordPress 2.9 beta1 发布

WordPress官方发布了WordPress 2.9的第一个测试版本:WordPress 2.9 beta 1。 beta版本都不太稳定,不喜欢折腾的朋友可以暂时不用升级,等正式版出来了再说;喜欢折腾的朋友,可以试试Wopus...

红薯
2009/11/17
195
0
LAMP 编译安装 +wordpress+discuz

#软件下载 #开源博客Wordpress 下载地址:https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz #PHP 7 下载地址:http://cn2.php.net/distributions/php-7.1.4.tar.gz #apache 下载地址:......

chaunceyjiang
2018/06/26
0
0
Wordpress 网站搭建及性能监控方法详解!

前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统。并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站、企业网站、电...

OneAPM蓝海讯通
2016/02/22
63
0
PHP读取Mysql数据库指定表所有记录

PHP读取Mysql数据库指定表所有记录 爱推吧2017-01-0798 阅读 表数据库PHP读取mysql 本代码实现php连接并读取MYSQL指定表中的所有内容,并以一个带表头的表格来显示所有内容,虽然很简单,但对...

爱推吧
2017/01/07
0
0
给wordpess博客的数据库减肥提速

随着wordpress网站的时间越来越久,文章越来越多,大家是不是也感受到自己的wordpress网站的运行速度也随之下降?这是什么原因呢?前面的文章,高时银博客也介绍过一些方法,如:评论头像优化...

hero2019
2018/07/15
12
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
18分钟前
8
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
41分钟前
14
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
49分钟前
28
0
Elasticsearch 实战(一) - 简介

官腔 Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 基本等于没说,咱们慢慢看 1 概述 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜...

JavaEdge
54分钟前
22
0
【jQuery基础学习】11 jQuery性能简单优化

本文转载于:专业的前端网站➦【jQuery基础学习】11 jQuery性能简单优化 关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的。如果这样不能直接找到,也可以用find方法继...

前端老手
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部