如何按数组值获取 MySQLi 数据顺序?

时间:2021-06-28 08:32:50

标签: php mysql arrays sorting custom-sort

我创建了一个数组,用于从 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 数组列表显示记录?

2 个答案:

答案 0 :(得分:1)

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

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

应该做的伎俩

答案 1 :(得分:-2)

php manual 内爆是

<块引用>

内爆(字符串 $separator,数组 $array):字符串

所以你的第一个代码块变成:

$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 变量具有值:249853,245549,249851,245552,245551,249854,245550,282445,261747,249852,222398,248072,248390,272473,219212,234140,249815,241089,271940,274940

但是,如果您想在查询中使用 $sorted_ids,则必须更改内爆:$sorted_ids = "'".implode("','", $ids)."'";

所以 $sorted_ids 将包含 '249853','245549','249851','245552','245551','249854','245550','282445','261747','249852','222398','248072','248390','272473','219212','234140','249815','241089','271940','274940'

然后将其用于您的查询:

$sql = "SELECT ID, number FROM table WHERE ID IN ($sorted_ids)";
$result = mysqli_query($connection, $sql);
相关问题