php - 由 PHP 中的另一个数据库字段排序的 id 数组
问题描述
我有一个通过 javascript 传递到 php 文件的 id 数组。在 php 中,我收到一个包含 5 个元素的数组,如下例所示:
23
43
33
123
12
数据库表是这样的:
id
playerId
name
**position**
传递的数组包含 playerIds (23,43,33,123,12),但我想按数据库字段位置(不是数字)对该数组进行排序。
这可能吗?
提前非常感谢!
编辑:好的,我设法解决了这个问题。我会将代码保留在这里,以防它对任何人都有帮助:
$v = $_GET['players'];
$sortedList = array();
$playerIdsStr = implode("," , $v);
$s = "select id from players where id in ($playerIdsStr) order by position";
$q = mysqli_query($conexion, $s);
while($r = mysqli_fetch_array($q))
{
$sortedList[] = $r["id"];
}
$sortedList 是 $v 数组,但按位置排序。正是我需要的。
解决方案
尝试这个...
select * from table_name where playerId in ('23','43','33','123','12') order by position
注意:请避免('23,43,33,123,12')
使用('23','43','33','123','12')
OR(23,43,33,123,12)
假设$playerIds = [23,43,33,123,12];
然后使用:
$playerIdsStr = implode("," , $playerIds);
$sql = "select * from table_name where playerId in ($playerIdsStr) order by position"
如果 playerId 字段是数据库中的整数,这将起作用。对于字符串使用:
$playerIdsStr = implode("','" , $playerIds);
$sql = "select * from table_name where playerId in ('$playerIdsStr') order by position"
推荐阅读
- api - Django Rest Framework-如何将数据作为字符串发送
- ssis - 条件拆分和派生列项目
- laravel - 为 Laravel 通知指定队列名称
- python - Jupyter/Geopandas 的绘图顺序中断了 figsize
- javascript - 如何遍历对象数组匹配另一个数组中的公共元素并返回“名称”的键值
- java - 蓝牙 LE 通过应用程序在 Android 设备之间发送字符串数据
- linux - 从 python GUI tkinter 运行 linux 终端命令
- autohotkey - InputBox 命令的输出为空
- date - 根据时间递增日期
- python - Web 抓取 BeautifulSoup find_all 在 APEC 上不起作用