[英]Sort records by the order of IN clause
我有以下代码将数据插入名为$usersEmails
的数组中:
while($get = mysqli_fetch_assoc($query_run)){
$userOne = $get['UserOne'];
$userTwo = $get['UserTwo'];
if($userOne != $id){
array_push($usersEmails, $userOne);
}else if($userTwo != $id){
array_push($usersEmails, $userTwo);
}
}
然后,我使用此数组进行了查询:
$query = 'SELECT `Email` FROM `users`
WHERE `Id` IN ('.implode(',', array_map('intval', $usersEmails)).')';
这段代码生成按users.Id
排序的users.Id
,但是我希望这些ID的排列顺序与它们在数组中显示的顺序相同。
换句话说,我希望ID从0 --> end of array
输出
通过添加到您的sql查询order by
并使用field
:
$query = 'select `Email`
from `users`
where `Id` in (' . implode(',', array_map('intval', $usersEmails)) . ')
order by field(`Id`, ' . implode(',', array_map('intval', $usersEmails)) . ')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.