[英]How to optimize the SQL query and add more array elements to the existing array?
我有一個名為$insert_users
的數組,如下所示:
Array
(
[0] => 9def02e6337b888d6dbe5617a172c18d
[1] => a6d22e4cc3f65778a60b359842bcec82
[2] => e17151c98358b60910d4d9fd6ae73ac4
[3] => 472d3d7eca74cb3518bcba787aee8540
)
現在我必須從上面的數組中為每個id發出一個SQL查詢。 我為此編寫的代碼如下:
foreach($insert_users as $key => $value ) {
$sql = " SELECT DISTINCT ud.user_mobile_number, u.user_first_name, u.user_last_name FROM OCN.users_groups_subscribe ugs JOIN OCN.users_details ud ON ud.user_id=ugs.subscribe_user_id JOIN OCN.users u ON u.user_id=ugs.subscribe_user_id WHERE ugs.subscribe_user_id ='".$value."'";
$this->mDb->Query( $sql);
$students_data = $this->mDb->FetchArray();
}
它返回$insert_users
數組中的單個id元素的數組:
Array
(
[0] => Array
(
[user_mobile_number] => 9929933345
[user_first_name] => Ashish
[user_last_name] => Patil
)
)
但我沒有得到所需格式的陣列。 我想要以下格式的數組$students_data
以及數組$insert_users
所有值:
Array(
[0]=>Array
(
[user_full_name] => Ashish Patil //This key should be newly generated & should contain values of keys user_first_name & user_last_name concatenated to each other
[user_mobile_number] => 9929933345
)
)
此外,任何人都可以告訴我有沒有辦法只觸發一次SQL查詢並獲得所需的數組,其中包含來自數組$insert_users
所有ID的詳細信息?
這不會有幫助:
SELECT DISTINCT ud.user_mobile_number,
CONCAT(u.user_first_name,' ',u.user_last_name) AS user_full_name
FROM OCN.users_groups_subscribe ugs
JOIN OCN.users_details ud ON ud.user_id=ugs.subscribe_user_id
JOIN OCN.users u ON u.user_id=ugs.subscribe_user_id
WHERE ugs.subscribe_user_id ='".$value."'";
而不是做
foreach($insert_users as $key => $value ) {
$sql = " SELECT DISTINCT ud.user_mobile_number, u.user_first_name, u.user_last_name FROM OCN.users_groups_subscribe ugs JOIN OCN.users_details ud ON ud.user_id=ugs.subscribe_user_id JOIN OCN.users u ON u.user_id=ugs.subscribe_user_id WHERE ugs.subscribe_user_id ='".$value."'";
$this->mDb->Query( $sql);
$students_data = $this->mDb->FetchArray();
}
做
$value = "'" . implode("','", $insert_users) . "'";
$sql = " SELECT DISTINCT ud.user_mobile_number, CONCAT(u.user_first_name,' ',u.user_last_name) AS user_full_name FROM OCN.users_groups_subscribe ugs JOIN OCN.users_details ud ON ud.user_id=ugs.subscribe_user_id JOIN OCN.users u ON u.user_id=ugs.subscribe_user_id WHERE ugs.subscribe_user_id IN(" .$value . ")";
$this->mDb->Query( $sql);
$students_data = $this->mDb->FetchArray();
現在,您應該在一個查詢中獲得所需的所有結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.