Массив идентификаторов, отсортированный по другому полю базы данных в PHP - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть массив идентификаторов, который передается через 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, но отсортированный по позиции.Как раз то, что мне было нужно.

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте это ... 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 имеет значение integer в БД.Для string используйте:

$playerIdsStr = implode("','" , $playerIds);
$sql = "select * from table_name where playerId in ('$playerIdsStr') order by position"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...