wordpress直接操作數據庫的方法

wordpress占據全球40%的網站地位,是世界上使用最活躍的內容管理系統(tǒng)(CRM)。學習成本低,社區(qū)活躍等特點使他一直成為草根站長最喜愛的內容管理系統(tǒng)。

武漢APP開發(fā)

wordpress本身由于其強大的功能,讓非常多的程序員直接在其之上開發(fā)功能強大的系統(tǒng),比如商城系統(tǒng),以及一些負責的管理系統(tǒng)。

但是由于wordpress最初就是定位于博客系統(tǒng),其數據庫結構設計的非常的簡單,基本上所有的復雜類型數據都只能已文章的形式展示出來。如果數據量大。wordpress那原本的數據表結構就會顯得非常不合理。因此默認的wordpress結構原本也不適合百萬級別的大數據管理。

如果用戶想使用wordpress作為框架開發(fā)系統(tǒng),建議復雜的數據類型全部采用自己建立數據庫的方式處理,wordpress有完善的數據庫函數,下面我就來介紹一下相關的幾個函數。

一、sql語句處理,防止sql注入攻擊。

$sql = $wpdb -> prepare("query",[%d,%d,%s])

例如:

$sql = $wpdb -> prepare("SELECT * FROM `user` WHERE `username` = %s AND `password` = %s", $username, $password);

用這種方式,函數可以判斷$username與$password是否是純參數,不能作為執(zhí)行語句處理。

二、獲取單一數據,在一般sql語句就只返回一個數值時使用。

$var = $wpdb -> get_var("query");

例如:

$var = $wpdb -> get_var("SELECT count(*) FROM `user`");

這個函數直接返回值,可以直接使用。

注:其實get_var并不是僅僅只能用于就返回一個數值的sql語句,而是他默認只返回第一行最左邊的元素。如果希望他返回其他元素,可以使用get_var("query", x, y)來實現(xiàn)。

三、獲取一行數據,在一般sql語句就只返回特定對象時使用。

$sql = $wpdb -> get_row("query", output_type);

例如:

$var = $wpdb -> get_row("SELECT * FROM `user` WHERE `userid` = 1", ARRAY_A);

output_type:三個預定義的常量之一。默認值為OBJECT。

OBJECT —— 返回的結果以對象形式輸出

ARRAY_A ——返回的結果以關聯(lián)數組形式輸出

ARRAY_N —— 返回的結果以數值索引數組形式輸出

我通常使用OBJECT或是ARRAY_A,訪問方式分別為$var -> username(output_type為OBJECT時)或是$var["username"](output_type為ARRAY_A時)

注:其實get_row并不是僅僅只能用于就返回一行的sql語句,而是他默認只返回第一行的集合。如果希望他返回其他行,可以使用get_row("query", output_type, y)來實現(xiàn)。

四、獲取一列數據,在一般sql語句就只返回特定屬性時使用。

$sql = $wpdb -> get_col("query");

例如:

$var = $wpdb -> get_col("SELECT `age` FROM `user`);

返回的結果以數值索引數組形式輸出,一般通過foreach函數分離,或是直接使用$var[1]這樣的方式獲取。

注:其實get_col并不是僅僅只能用于就返回一列的sql語句,而是他默認只返回第一列的集合。如果希望他返回其他列,可以使用get_col("query", x)來實現(xiàn)。

五、獲取多列數據,在一般sql語句就只返回特定屬性時使用。

$sql = $wpdb -> get_results("query", output_type);

例如:

$vars = $wpdb -> get_results("SELECT * FROM `user`, ARRAY_A);

返回的結果以數值索引數組形式包其他形式輸出,一般通過foreach函數分離,或是直接使用$var[1]這樣的方式獲取。獲取的對象受第二個參數控制

output_type:三個預定義的常量之一。默認值為OBJECT。

OBJECT —— 返回的結果以對象形式輸出

ARRAY_A ——返回的結果以關聯(lián)數組形式輸出

ARRAY_N —— 返回的結果以數值索引數組形式輸出

我通常使用OBJECT或是ARRAY_A,訪問方式分別為$var -> username(output_type為OBJECT時)或是$var["username"](output_type為ARRAY_A時)

例如

foreach($vars as $var) {

echo $var["username"];//output_type是ARRAY_A時

}

五、插入新數據

$id = $wpdb -> insert("table_name", array(), array(%s, %d));

例如:

$id = $wpdb -> insert("table_name", array("username" => $username,"password" => $password, "age" => $age), array("%s", "%s", "%d"));

第一個參數是將要寫入的數據以數組形式插入。第二個參數是申明插入的數據類型,同時也有一定的反sql注入式攻擊的效果。返回值為新建的那條數據的主鍵。

六、更新新數據

$id = $wpdb -> update("table_name", array(), array(),array(%s, %d), array(%s, %d));

例如:

$id = $wpdb -> update("table_name", array("username" => $username, "password" => $password, "age" => $age), array("ID" => $ID), array("%s", "%s", "%d"), array("%d"));

第一個參數是將要寫入的數據以數組形式插入。第二個參數是過濾條件,也就是sql語句中where后的參數。第三個參數是要更新數據的數據類型,第四個參數是過濾條件的數據類型。返回值為更新的那條數據的主鍵。

七、刪除數據

$id = $wpdb -> delete("table_name", array(), array(%s, %d));

例如:

$id = $wpdb -> update("table_name", array("ID" => $ID), array("%d"));

第一個參數是過濾條件,也就是sql語句中where后的參數。第二個參數是過濾條件的數據類型。返回值為刪除的數目。

通過上述函數直接對數據庫操作,可以大大提高系統(tǒng)的運行速度,讓wordpress也適合開發(fā)大型系統(tǒng)。

文章來源武漢APP開發(fā) http://www.worldflying.cn/article-id-15.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容