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