WordPress 查询数据库 操作数据库
https://www.168seo.cn/jianzhan/wordpress/advance-wordpress-tutorial/24692.html
?
插件位置
需要注意的是,由于在WordPress中可以配置wp-content/plugins/目錄的位置,所以你必須使用plugin_dir_path()和plugins_url()兩個函數(shù)來獲取插件的路徑。
WordPress 查詢數(shù)據(jù)庫
查詢
?
Python
?
| 1 2 3 4 5 6 7 8 | global $wpdb; $fivesdrafts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts ????WHERE post_status = 'publish' AND post_author = 1"); foreach ($fivesdrafts as $fivesdraft) { ????echo $fivesdraft->ID."??".$fivesdraft->post_title."<br>"; } die(); ? |
?
輸出:
WordPress是一個非常強大的內(nèi)容管理系統(tǒng),非常適合搭建CMS網(wǎng)站,也非常適合二次開發(fā)。
本文就為大家介紹一下,在二次開發(fā)中非常重要的一個環(huán)節(jié)–數(shù)據(jù)庫操作。
wpdb類
為了方便二次開發(fā),WordPress封裝了一個非常友好的數(shù)據(jù)庫操作類:wpdb。
wpdb類封裝了所有的數(shù)據(jù)庫操作函數(shù),它是基于開源的數(shù)據(jù)庫操作類ezSQL進行修改的,使其更適合于WordPress,也使其僅適用于mySQL數(shù)據(jù)庫。
同時,WordPress還提供了一個全局變量$wpdb,并將其實例化為wpdb類的對象。
這樣我們就可以直接使用$wpdb來調(diào)用所有的數(shù)據(jù)庫操作函數(shù)。
注意 使用前 一定要?global $wpdb;
query函數(shù)
這個函數(shù)是最基本的操作函數(shù),$query為SQL語句,提交給數(shù)據(jù)庫執(zhí)行,結(jié)果分兩種情況:
1). 如果是insert|delete|update|replace, 返回受影響行數(shù),在insert|replace這種情況下,該函數(shù)會用$this->insert_id記錄下新插入的ID。
2). 如果是“select”,該會用$this->last_result記錄下查詢到結(jié)果集,返回查詢到的記錄行數(shù)。
如果出錯,則返回FALSE。
實例:
?
Python
?
| 1 2 3 4 5 6 7 8 9 10 | <?php $wpdb->query( ????" ????UPDATE $wpdb->posts ????SET post_parent = 7 ????WHERE ID = 15 AND post_status = 'static' ????" ); ?> ? |
?
escape函數(shù)
使用反斜線引用數(shù)據(jù),也就是使用魔術(shù)引號。
實例:
?
Python
?
| 1 2 3 4 5 6 | <?php $name = $wpdb->escape($name); $email = $wpdb->escape($email); $wpdb->query("INSERT INTO myusers (id, name, email) VALUES (NULL, '$name', '$email')"); ?> ? |
?
insert函數(shù)
這是插入記錄函數(shù),第一個參數(shù)是表的字段數(shù)組,第二個是數(shù)據(jù)數(shù)組,第三個用于規(guī)定$data中每個值的數(shù)據(jù)類型。插入數(shù)據(jù)返回1,否則為0。
示例:
?
Python
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <? $wpdb->insert( ????'table', ????array( ????????'column1' => 'value1', ????????'column2' => 123 ????), ????array( ????????'%s', ????????'%d' ????) ); ?> ? |
?
update函數(shù)
這是更新記錄函數(shù),第一個參數(shù)是表的字段數(shù)組,第二個是數(shù)據(jù)數(shù)組,第三個是條件數(shù)組,第四個和第五個分別用于規(guī)定$和$where中每個值的數(shù)據(jù)類型。更新了為1,否則為0。
實例:
?
Python
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $wpdb->update( ????'table', ????array( ????????'column1' => 'value1',??// string ????????'column2' => 'value2'?? // integer (number) ????), ????array( 'ID' => 1 ), ????array( ????????'%s',?? // value1 ????????'%d'????// value2 ????), ????array( '%d' ) ); ?> ? |
?
get_var函數(shù)
這個只返回一個值,默認是第0行第0列。如果$query不為空,首先執(zhí)行查詢,如果$query為空的話,則表示從cache中選出;然后返回第X列第Y行的值。
實例:
?
Python
?
| 1 2 3 4 5 | <? $user_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->users;") ); echo "<p>User count is {$user_count}</p>"; ?> ? |
?
get_row函數(shù)
返回一行,$output指定返回的類型,可以是ARRAY_A(關(guān)聯(lián)數(shù)組)、ARRAY_N(數(shù)字數(shù)組)或者OBJECT(對象)。$y指定第幾行。
實例:
默認情況下,$output的值為OBJECT,那么用法如下:
?
Python
?
| 1 2 3 4 5 | <?php $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10"); echo $mylink->link_id; // prints "10" ?> ? |
?
如果$output的值為ARRAY_A,那么用法如下:
?
Python
?
| 1 2 3 4 5 | <?php $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10",ARRAY_A); echo $mylink['link_id']; // prints "10" ?> ? |
?
如果$output的值為ARRAY_N,那么用法如下:
?
Python
?
| 1 2 3 4 5 | <?php $mylink = $wpdb->get_row("SELECT * FROM $wpdb->links WHERE link_id = 10",ARRAY_N); echo $mylink[1]; // prints "10" ?> ? |
?
get_col函數(shù)
返回一列,$x指定第幾列。
實例:
?
Python
?
| 1 2 3 4 5 6 7 | <? $names = $wpdb->get_col("SELECT name, email FROM myusers", 0) foreach ( $names as $name ) { ????echo $name; } ?> ? |
?
get_results函數(shù)
返回查詢的結(jié)果集,允許以ARRAY_A、ARRAY_N或者OBJECT三種方式返回。
?
Python
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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; } ?> ? |
?
get_col_info函數(shù)
返回字段信息。
?
Python
?
| 1 2 3 4 5 | <?php $col_name = $wpdb->get_col_info('name', 0); echo $col_name; ?> ? |
?
prepare函數(shù)
這是一個可變參數(shù)函數(shù),即函數(shù)的參數(shù)個數(shù)不確定。$query為SQL語句,其中可以包含像%s和%d這樣的占位符,其它所有非占位符里面的%都要使用%%來代替。由于SQL語句中可能含有像單引號、雙引號這樣的特殊字符,如果不進行處理就直接提交給數(shù)據(jù)庫,可能會導(dǎo)致錯誤或者出現(xiàn)安全問題。為此,我們可以通過prepare函數(shù)來對SQL語句進行。其實該函數(shù)的用法非常簡單,就跟C語言中的sprintf()和vsprintf()差不多。
用法:
?
Python
?
| 1 2 | <?php $sql = $wpdb->prepare( 'query' [, value_parameter, value_parameter ...] ); ?> ? |
?
實例:
?
Python
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <? $metakey????= "Harriet's Adages"; $metavalue??= "WordPress' base 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。設(shè)置SAVEQUERIES常量為TRUE,可以把在里執(zhí)行的所有查詢及其停止時間保存到$this->queries這個數(shù)組中,以后調(diào)試的時候可以使用;而設(shè)置WP_DEBUG常量為TRUE,則可以輸出錯誤。不過,這兩個常量開關(guān)默認都沒有打開,我們在測試的時候,可以在wp_config.php文件中將其開啟。
總結(jié)
以上是生活随笔為你收集整理的WordPress 查询数据库 操作数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVa 264 - Count on C
- 下一篇: mysql 怎么实现随机查询并分页,不重