任何系统都离不开数据库,用到数据库存就有sql查询语句 ,wordpress也不例外; 今天我们就来简单的介绍一下在wordpress中直接执行sql查询语句的一些方法。


使用环境
使用wordpress的时候,如果想直接使用WP里封装的数据库操作的类(wp-db.php),将 wp-blog-header.php 或者 wp-load.php 包含到代码中就可以使用了。WordPress提供了一个类的操作数据库存的全局变量叫$wpdb,通过这个全局变量来与WordPress数据库进行关联,所以我们在使用之前,需要先定义下这个全局变量,写法如下:

<?php  
require_once __DIR__ . '/wp-load.php';

global $wpdb;  
global $table_prefix;      //获取表前缀
?>

1、query() 执行原生sql语句

主要用于执行统计、更改、插入、删除等SQL查询,返回影响记录的条数 (int)。通常不用于查询,如果用于执行Select查询只返回查询的结果数。

$res = $wpdb->query("DELETE FROM $wpdb->posts WHERE id = '13' ");
var_dump($res);

返回int(1)

2、get_row(query)方法获取一行记录

主要用户获取一行数据,该函数可将行作为对象、关联数组或数值索引数组返回。如果查询返回了多个行,函数只返回第一行。
语法:$wpdb->get_row('query'  [, output_type]  [,row_offset]);

$query = "select * from {$table_prefix}article_cn where id = 320";
$res = $wpdb->get_row($query);        //默认返回对象
echo $res->post_title;            //获取标题

$res = $wpdb->get_row($query,  ARRAY_A);        //返回一维关联数组

默认第二参数值为OBJECT ,返回对象,
其他两个值:
ARRAY_A (常用)——返回的结果以关联数组形式输出,(一维数组)
ARRAY_N —— 返回的结果以数值索引数组形式输出(一维数组)

第三参数:row_offset(整数)预计的数据库表的行数(0为表中第一行)。默认值为0

wordpress数据库连接信息 wordpress怎么连接数据库_数组

3、get_results()  -- 获取多行记录集

查询结果集,get_results 函数可以从数据库中抽取函数生成的多行结果。$wpdb 函数以数组形式返回整个查询结果。
    语法:$wpdb->get_results('query', output_type);
    output_type 三个预定义的常量之一,默认值为 OBJECT; OBJECT —— 以对象形式输出返回的结果; ARRAY_A ——以关联数组形式输出返回的结果; ARRAY_N —— 以数值索引数组形式输出返回的结果。
例:
$query = "SELECT id, guid, post_type, post_mime_type  FROM `yes_posts` WHERE post_type= 'attachment' AND post_mime_type = 'image/png';";
$info = $wpdb->get_results($query,ARRAY_A);

4、insert( ) 插入记录

$res = $wpdb->insert("{$table_prefix}translate", $data);
    //$last_id = $wpdb->insert_id;
    //成功返回影响记录的条数int(1)
    //失败返回bool(false)

5、update() 更新记录

$data['status_uk'] = 2;
        $data['translate_uk_time'] = $translate_time;
        $res = $wpdb->update("{$table_prefix}article_cn", $data, ['id'=>$article_cn_id]);

 返回更新的记录条数,如果修改的字段没有一个新的,则返回0 

4、get_col函数

    要选择数据库表中的一列内容,可使用get_col函数。 返回指定列的 索引数组
    $wpdb->get_col('query',column_offset);
    参数:column_offset(整数)如果查询的是多个列,此可以定义,显示第几列,如值为2,表示显示第3列。(0为表中第一列)。默认值为0。

例:获取word_id = 5 的所有数据的 管理category_id 

wordpress数据库连接信息 wordpress怎么连接数据库_数组_02

$queryCate = "SELECT category_id FROM `yes_word_to_category` WHERE word_id = 5";
$idArr = $wpdb->get_col($queryCate);
pr($idArr);

返回一维数组:

wordpress数据库连接信息 wordpress怎么连接数据库_数组_03

例:

$query = "SELECT id, guid, post_type, post_mime_type  FROM `yes_posts` WHERE post_type= 'attachment' AND post_mime_type = 'image/png';";
 $info = $wpdb->get_col($query);

5、get_var() 函数
如果要选择一个变量,可以使用 get_var 函数返回一个来自数据库的变量。但只返回一个变量,如果没有查询结果,则返回N

ULL。
 $wpdb->get_var('query',column_offset,row_offset);$user_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->users;"));
       echo '<p>用户一共有 ' . $user_count . '人</p>';
 */