PHP中按另一个数据库字段排序的ID数组

PHP中按另一个数据库字段排序的ID数组,php,mysql,arrays,sorting,Php,Mysql,Arrays,Sorting,我有一个通过javascript传递到php文件的ID数组。在php中,我收到一个包含5个元素的数组,如以下示例所示: 23 43 33 123 12 数据库表如下所示: id playerId name **position** 传递的数组包含playerIds(23,43,33123,12),但我想按数据库字段位置对该数组进行排序(不是数字) 这可能吗 提前多谢 编辑:好的,我设法解决了这个问题。我将把代码留在这里,以防对任何人都有帮助: $v = $_GET['players'];

我有一个通过javascript传递到php文件的ID数组。在php中,我收到一个包含5个元素的数组,如以下示例所示:

23
43
33
123
12 
数据库表如下所示:

id
playerId
name
**position**
传递的数组包含playerIds(23,43,33123,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数组,但按位置排序。正是我需要的

试试这个。。。
从playerId按位置排列的('23'、'43'、'33'、'123'、'12')表名中选择*

注意:请避免使用
('23,43,33123,12')
,并使用
('23'、'43'、'33'、'123'、'12')
(23,43,33123,12)

假设
$playerIds=[23,43,33123,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"

嗨,Nikhill,非常感谢你的快速回答。我将数组作为一个变量接收,比如$v,所以我尝试了这样的方法:“按位置顺序从id为(““.”“$v.””)的播放器中选择*,但显然,它不起作用。对不起,我对这方面的知识不多:(再次感谢!使用php的
inpode()
函数将数组转换为字符串。假设您通过使用
inpode()拥有
array=[1,2,3,4]
你将得到
1,2,3,4
这样做,我得到一个很长的数字,没有空格也没有逗号。当然,在执行查询时,它找不到任何播放器。如果我得到这个长数字,并用逗号分隔不同的ID,我只得到第一个播放器,而没有得到其余的播放器(我直接在phpmyadmin中对照数据库进行了检查)。如果SQL列是整数类型,则不必使用引号。您必须将第一个参数写入类似逗号的
内爆(“,”,数组)
内爆(分隔符,数组)
check for more您的服务器版本是什么?嗨@PaulSpiegel,这就是您想要的版本吗?versionón PHP 5.6.30 version on MySQL 10.1.37-MariaDB-cll-lveYes-这就是我的意思。太糟糕了,它不是MariaDB 1.3为什么?MariaDB 10.3支持值表构造函数: