將資料插入到 WordPress 資料庫中
在 WordPress 開發中,操作資料庫是不可避免的,而 $wpdb
是 WordPress 提供的全域資料庫物件,它包含了一系列的方法,用於與資料庫進行互動。$wpdb->insert()
方法就是其中之一,用於將資料插入到指定的資料表中。在本節課中,我們將學習如何使用 $wpdb->insert()
將資料插入到資料庫中,並且通過 RESTful API 接收資料進行存儲。
$wpdb->insert()
的基本概念
$wpdb->insert()
是 WordPress 中用來將資料插入到資料庫表格的主要方法之一。這個方法接受兩個主要參數:
- 第一個參數是表格名稱。
- 第二個參數是包含要插入資料的關聯陣列,這個陣列的鍵是資料表的欄位名稱,值是要插入的對應資料。
使用 $wpdb->insert()
插入資料
我們將通過以下步驟來實現透過 RESTful API 接收資料並將其插入到資料庫表中。這個範例中,我們會假設已經有一個名為 iot_device
的資料表,用於存儲物聯網設備的名稱。
- 範例代碼:
function add_device_api($request) { // 獲取 WordPress 資料庫全域物件 global $wpdb; // 處理請求中的參數 $params = stripslashes_deep($request->get_body_params()); // 檢查是否存在必要的參數 if (!isset($params["device_name"])) { return new WP_REST_Response( array( 'code' => 400, 'message' => 'Missing Parameter', 'data' => null ), 200 ); } // 安全地處理輸入數據 $device_name = esc_sql($params['device_name']); // 使用 $wpdb->insert() 方法將資料插入到資料庫表中 $wpdb->insert( "iot_device", // 資料表名稱 array( "device_name" => $device_name // 欄位名稱對應的數據 ) ); // 返回成功回應 return new WP_REST_Response( array( 'code' => 200, 'message' => 'success', 'data' => null ), 200 ); }
代碼解釋:
global $wpdb;
:這行代碼引入 WordPress 全域資料庫物件$wpdb
,以便使用其中的資料庫操作方法。stripslashes_deep($request->get_body_params())
:這行代碼從 API 請求中提取資料並去除多餘的反斜線。esc_sql($params['device_name'])
:這行代碼用來安全地處理輸入數據,防止 SQL 注入攻擊。$wpdb->insert("iot_device", array("device_name" => $device_name));
:這行代碼將device_name
插入到iot_device
資料表中。- 第一個參數
"iot_device"
是資料表名稱。 - 第二個參數是一個關聯陣列,鍵是資料表的欄位名稱,值是要插入的資料。
- 第一個參數
new WP_REST_Response(...)
:這段代碼返回 API 請求的回應,包含狀態碼和訊息。
測試插入資料的 RESTful API 端點
完成代碼後,您可以通過 Postman 或其他 API 測試工具來測試這個端點。
- 測試步驟:
- 打開 Postman。
- 設置請求方法為 POST,URL 為
http://yourdomain.com/wp-json/iot/v1/device/
。 - 在請求體中使用
x-www-form-urlencoded
或raw
(JSON) 格式,並提供以下參數:device_name
:設備的名稱。
- 發送請求並檢查回應,您應該會看到成功插入資料的回應信息。
- 使用資料庫管理工具(如 phpMyAdmin)檢查
iot_device
資料表,確認是否成功插入了新的設備名稱。