Как можно получить вывод записей из базы данных в той последовательности в которой передано 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 "
Комментариев нет:
Отправить комментарий