查詢資料庫並返回多行結果
在 WordPress 開發中,查詢資料庫並獲取多行結果是一個常見的需求。$wpdb->get_results()
方法允許您執行 SQL 查詢並返回多行結果,這在構建插件和主題時非常有用。在本節課中,我們將學習如何使用 $wpdb->get_results()
來查詢資料庫中的資料,並通過 RESTful API 將結果返回給客戶端。
$wpdb->get_results()
的基本概念
$wpdb->get_results()
是一個非常強大的方法,用於執行 SQL 查詢並返回多行結果。這個方法通常返回一個物件數組,每個物件代表資料表中的一行。您可以通過訪問物件的屬性來獲取資料表中的欄位值。
使用 $wpdb->get_results()
查詢並返回所有資料
我們將通過以下步驟來實現透過 RESTful API 獲取並返回資料表中的所有資料。在這個範例中,我們將查詢 iot_device
資料表,並將結果返回給客戶端。
- 範例代碼:
function list_device_api($request) { // 獲取 WordPress 資料庫全域物件 global $wpdb; // 執行 SQL 查詢,獲取資料表中的所有資料 $data = $wpdb->get_results("SELECT * FROM iot_device"); // 準備要返回的資料 $output_array_data = array(); foreach ($data as $row) { $output_data = array(); $output_data['device_name'] = $row->device_name; // 取得每行的 device_name 欄位值 array_push($output_array_data, $output_data); } // 返回 API 回應 return new WP_REST_Response( array( 'code' => 200, 'message' => 'Success', 'data' => $output_array_data ), 200 ); }
代碼解釋:
global $wpdb;
:這行代碼引入 WordPress 全域資料庫物件$wpdb
,以便使用其中的資料庫操作方法。$wpdb->get_results("SELECT * FROM iot_device");
:這行代碼執行 SQL 查詢,從iot_device
資料表中獲取所有資料。該方法返回一個包含資料表中所有行的物件數組。foreach ($data as $row)
:這行代碼迭代查詢結果中的每一行資料,並將需要的欄位值提取出來。$output_data['device_name'] = $row->device_name;
:這行代碼提取每行的device_name
欄位值,並將其存儲在一個關聯陣列中。array_push($output_array_data, $output_data);
:將每行資料添加到最終要返回的數組中。new WP_REST_Response(...)
:這段代碼返回 API 請求的回應,包含狀態碼、信息和查詢結果數據。
測試查詢資料的 RESTful API 端點
完成代碼後,您可以通過 Postman 或其他 API 測試工具來測試這個端點。
- 測試步驟:
- 打開 Postman。
- 設置請求方法為 GET,URL 為
http://yourdomain.com/wp-json/iot/v1/device/
。 - 發送請求並檢查回應,您應該會看到成功查詢並返回資料表中所有資料的回應信息。
- 如果資料表中有多行資料,您應該會看到這些資料以 JSON 格式返回。