Php 如何优化SQL查询并向现有数组添加更多数组元素?
我有一个名为Php 如何优化SQL查询并向现有数组添加更多数组元素?,php,mysql,sql,arrays,associative-array,Php,Mysql,Sql,Arrays,Associative Array,我有一个名为$insert\u users的数组,如下所示: Array ( [0] => 9def02e6337b888d6dbe5617a172c18d [1] => a6d22e4cc3f65778a60b359842bcec82 [2] => e17151c98358b60910d4d9fd6ae73ac4 [3] => 472d3d7eca74cb3518bcba787aee8540 ) foreach($insert_user
$insert\u users
的数组,如下所示:
Array
(
[0] => 9def02e6337b888d6dbe5617a172c18d
[1] => a6d22e4cc3f65778a60b359842bcec82
[2] => e17151c98358b60910d4d9fd6ae73ac4
[3] => 472d3d7eca74cb3518bcba787aee8540
)
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();
}
现在,我必须从上面的数组中为每个ID启动一个SQL查询。我为此编写的代码如下:
Array
(
[0] => 9def02e6337b888d6dbe5617a172c18d
[1] => a6d22e4cc3f65778a60b359842bcec82
[2] => e17151c98358b60910d4d9fd6ae73ac4
[3] => 472d3d7eca74cb3518bcba787aee8540
)
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\u users
数组中的单个id元素返回以下数组:
Array
(
[0] => Array
(
[user_mobile_number] => 9929933345
[user_first_name] => Ashish
[user_last_name] => Patil
)
)
但我没有得到所需格式的数组。我需要以下格式的数组$students\u data
,以及数组$insert\u 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查询一次,并获得所需的数组,该数组将包含来自数组的所有ID的详细信息$insert\u users
这是否有帮助:
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();
}
做
现在,您应该在一个查询中获得所需的所有结果是的,它可以将两个字符串连接起来,但是名字和姓氏之间应该有一个空格。它应该如何得到insert?现在看..空格将被插入。而且它只是关于连接部分。获取所需数组的单个查询如何?你知道吗?我不明白你在这里所说的单一查询是什么意思?这不是一个查询吗?是的,这是一个查询。但每次foreach迭代都会触发它。我想减少这个。有没有办法减少这种情况?明白我的意思了吗?