首页 > 解决方案 > 由 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 数组,但按位置排序。正是我需要的。

标签: phpmysqlarrayssorting

解决方案


尝试这个... 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"

推荐阅读