首页 > 解决方案 > 如何按数组值获取 MySQLi 数据顺序?

问题描述

我创建了一个数组,它用于从 MySQL 服务器获取数据。

$ids = array(249853, 245549, 249851, 245552, 245551, 249854, 245550, 282445, 261747, 249852, 222398, 248072, 248390, 272473, 219212, 234140, 249815, 241089, 271940, 274940);

$sorted_ids = implode($ids, ",");

使用 $sorted_ids 获取数据,这是要检索的 ID,但它是按 ID 升序检索数据

$sql = "SELECT ID, number FROM table WHERE ID IN ({$sorted_ids})";
$result = mysqli_query($connection, $sql);

我试过使用 == 但它只显示与其他记录匹配的索引。

$i = 0;
while($row = mysqli_fetch_assoc($result)) {
    if( $ids[$i] == $row['ID'] ) {
        echo $row['ID']."<br>";

        $i++;
    }
}

如果两个索引都与其他记录不匹配,则显示记录。

如何按 $ids 数组列表显示记录?

标签: phpmysqlarrayssortingcustom-sort

解决方案


做你想做的最简单的方法是在你的 SQL 中排序

$sql = "SELECT ID, number FROM table WHERE ID IN ({$sorted_ids}) ORDER BY FIELD(id, {$sorted_ids})";

应该做的伎俩


推荐阅读