[英]How to optimize the SQL query and add more array elements to the existing array?
I've an array named $insert_users
as follows: 我有一个名为
$insert_users
的数组,如下所示:
Array
(
[0] => 9def02e6337b888d6dbe5617a172c18d
[1] => a6d22e4cc3f65778a60b359842bcec82
[2] => e17151c98358b60910d4d9fd6ae73ac4
[3] => 472d3d7eca74cb3518bcba787aee8540
)
Now I have to fire an SQL query for each of these ids from the above array. 现在我必须从上面的数组中为每个id发出一个SQL查询。 The code I've written for this is as follows:
我为此编写的代码如下:
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();
}
It returns me following array for single id element from the $insert_users
array: 它返回
$insert_users
数组中的单个id元素的数组:
Array
(
[0] => Array
(
[user_mobile_number] => 9929933345
[user_first_name] => Ashish
[user_last_name] => Patil
)
)
But I'm not getting the array in desired format. 但我没有得到所需格式的阵列。 I want the array
$students_data
in following format and for all the values from the array $insert_users
: 我想要以下格式的数组
$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
)
)
Also, can anyone tell me is there any way to fire the SQL query just once and get the desired array which will contain details for all the ids from array $insert_users
? 此外,任何人都可以告诉我有没有办法只触发一次SQL查询并获得所需的数组,其中包含来自数组
$insert_users
所有ID的详细信息?
Won't this help: 这不会有帮助:
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."'";
Rather than doing 而不是做
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();
}
Do 做
$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();
Now you should get all the result you want in one query 现在,您应该在一个查询中获得所需的所有结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.