我從資料庫中取出并通過 ajax (wordpress) 發送。一切正常,除了我沒有從資料庫中獲取第一行。正如我在互聯網上看到的那樣,陣列中可能存在類似的問題。有人可以解釋并幫助我修復它以顯示所有行嗎?
代碼:
$sql = $wpdb->prepare( "SELECT * FROM users" );
$count = 0;
$user_object = array();
foreach( $wpdb->get_results( $sql ) as $key => $row ) {
$user_id = $row->user_ID;
$user_name = $row->user_name;
$user_object[$count]= array(
"user_ID"=>$user_id,
"user_name"=>$user_name,
);
$count ;
}
return wp_send_json( $user_object );
uj5u.com熱心網友回復:
您根本不需要回圈結果,您的代碼可以進一步簡化。
- 沒有可將變數系結到的占位符,因此無需使用
prepare(). - 無需回圈并手動設定第一級的索引或第二級的關聯鍵,因為
get_results()withARRAY_A已經為您完成了這項作業。
代碼:
return wp_send_json($wpdb->get_results('SELECT * FROM users', ARRAY_A));
請參閱:https ://developer.wordpress.org/reference/classes/wpdb/get_results/
當您想將 PHP 變數添加到 SQL 時,使用準備好的陳述句是合適的。例如:帶有 IN() 條件的 WordPress 準備好的陳述句
uj5u.com熱心網友回復:
你可以簡化它。不需要計數變數,因為陣列自己從 0 開始計數。
$sql = $wpdb->prepare("SELECT * FROM users");
$user_object = [];
foreach ($wpdb->get_results($sql) as $row) {
$user_object[] = [
"user_ID" => $row->user_ID,
"user_name" => $row->user_name,
];
}
return wp_send_json($user_object);
uj5u.com熱心網友回復:
WordPress 資料庫表總是使用前綴,所以你必須包含前綴 using$wpdb->prefix.'users'或者如果你想獲取 WordPress 核心用戶,那么你可以使用$wpdb->users來獲取帶前綴的表名。
參考:https ://developer.wordpress.org/reference/classes/wpdb/ 。
您可以使用ARRAY_Afor 第二個輸出引數,get_results()這樣您就不必遍歷結果。
參考: https ://developer.wordpress.org/reference/classes/wpdb/get_results/ 。
代碼:
global $wpdb;
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->users}" );
return wp_send_json($wpdb->get_results($sql, ARRAY_A));
或者,還有另一種方法可以讓 WordPress 中的用戶使用get_users().
參考:https ://developer.wordpress.org/reference/functions/get_users/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/532959.html
上一篇:如何創建一個函式來將字串“ABCD”轉換為陣列,例如:Javascript中的["A","AB","ABC","ABCD"
