我有一组ID,这些ID通过javascript传递到php文件。在php中,我收到了一个包含5个元素的数组,例如以下示例:
23
43
33
123
12
数据库表是这样的:
id
playerId
name
**position**
传递的数组包含playerIds(23,43,33,123,12),但我想通过数据库字段 position (不是数字方式)对该数组进行排序。
这可能吗?
非常感谢!
编辑:好的,我设法解决了这个问题。如果有任何帮助,我将在此处保留代码:
$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数组,但按位置排序。正是我所需要的。
答案 0 :(得分:1)
尝试一下...
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')
或(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"