Страницы

Поиск по вопросам

четверг, 20 июня 2019 г.

Сортировка результатов запроса по заданной в массиве последовательности

Как можно получить вывод записей из базы данных в той последовательности в которой передано id записей (у меня записи постоянно выводятся последовательно 1 - 5).
$connect= mysql_connect("localhost", "testing", "testing"); $select = mysql_select_db("testing", $connect); mysql_query("SET NAMES utf8");
$id = "5,2,1,4,3"; $result = mysql_query("SELECT * FROM products WHERE id IN ($id)");
while ($data = mysql_fetch_row($result)) { echo "

$data[0] ........."; echo "$data[2]

"; }


Ответ

Для этого можно воспользоваться MySQL-функцией FIELD(), которая возвращает позицию вхождения первого аргумента в список, который задается оставшимися аргументами. В качестве первого параметра передавайте значение из поля id, а в качестве остальных аргументов используйте значения из списка $id. Результат выполнения функции передавайте ключевому слову ORDER BY, осуществляющему сортировку результатов выборки
$connect= mysql_connect("localhost", "testing", "testing"); $select = mysql_select_db("testing", $connect); mysql_query("SET NAMES utf8");
$id = "5,2,1,4,3"; $result = mysql_query( "SELECT * FROM products WHERE id IN ($id) ORDER BY FIELD(id, $id)" );
while ($data = mysql_fetch_row($result)) { echo "

$data[0] ........."; echo "$data[2]

"; }

Комментариев нет:

Отправить комментарий