WordPress數據庫操做函數詳解

經過這個$wpdb對象,咱們能夠對WordPress數據庫進行任何操做,包括建表、查詢、刪除、更新等。要注意的是,若是要在自定義函數中使用$wpdb,必須先將其全局化(global $wpdb;)。php

下面就詳細介紹一下WordPress的數據庫操做函數:html

一、function query($query)sql

這個函數是最基本的數據庫操做函數,$query爲SQL語句,提交給數據庫執行,結果分兩種狀況:數據庫

1). 若是是「insert|delete|update|replace」, 返回受影響行數,在「insert|replace」這種狀況下,該函數會用$this->insert_id記錄下新插入的ID。數組

2). 若是是「select」,該函數會用$this->last_result記錄下查詢到結果集,返回查詢到的記錄行數。安全

若是出錯,則返回FALSE。app

實例:函數

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

二、function escape($data)測試

使用反斜線引用數據,也就是使用魔術引號。

實例:

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

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

這是插入記錄函數,第一個參數是表的字段數組,第二個是數據數組,第三個用於規定$data中每一個值的數據類型。插入數據返回1,不然爲0。

實例:

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

四、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' ) 
);
?>

五、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>";
?>

六、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"
?>

七、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;
}
?>

八、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;
}
?>

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

返回字段信息。

實例:

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

十、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文件中將其開啓。

相關文章
相關標籤/搜索