从PHP中具有相同列值的表中获取2行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PHP中具有相同列值的表中获取2行相关的知识,希望对你有一定的参考价值。

id      m_id             image
1        1               img1.jpg
2        2               img2.jpg
3        1               img11.jpg
4        2               img22.jpg
5        1               img111.jpg

........ etc

我需要的是 - 通过m_id从表组中只获得2行,如下所示

//here getting images where m_id=1 and it is not more than 2
<section class='test'>
     <div class="n-2">
       <img src='img1.jpg'>
     </div>
     <div class="n-2">
       <img src='img11.jpg'>
     </div>
</section>


//next fetching images with m_id=2
<section class='test'>
     <div class="n-2">
       <img src='img2.jpg'>
     </div>
     <div class="n-2">
       <img src='img22.jpg'>
     </div>
</section>
  ......

我尝试的是

<?php
 $query=$db->query("Select * from gallery order by m_id asc");
 $result = $query->fetchAll(PDO::FETCH_ASSOC);

    for ($i=0; $i < count($result); $i+=2) { 
    ?>
       <section class='test'>
     <div class="n-2">
       <img src='<?php $result[$i]['image']; ?>'>
     </div>
     <div class="n-2">
       <img src='<?php $result[$i+1]['image']; ?>'>
     </div>
     </section>
   <?php
   }
?>

但我得到的所有字段显示section class'test',如何得到显示部分类只有2行。

有专家吗?

答案

您好这个查询只会让您获得两条记录,您应该阅读w3schools.com中的mysql教程

Select * from gallery order by m_id asc LIMIT 2

更新1:这将有希望在你的情况下工作。

$query = $db->query("Select * from gallery order by m_id asc");
$items = $query->fetchAll(PDO::FETCH_ASSOC);

$result = [];
$temp = [];
foreach ($items as $item) {
    $m_id = $item['m_id'];
    if (!isset($temp[$m_id]) || count($temp[$m_id]) < 2) {
        $temp[$m_id][] = $item['image'];
        $result = $item['image'];
    }
}

for ($i = 0; $i < count($result); $i += 2) {
    ?>
    <section class='test'>
        <div class="n-2">
            <img src='<?php $result[$i]['image']; ?>'>
        </div>
        <div class="n-2">
            <img src='<?php $result[$i + 1]['image']; ?>'>
        </div>
    </section>
    <?php
}

以上是关于从PHP中具有相同列值的表中获取2行的主要内容,如果未能解决你的问题,请参考以下文章

如何从多次包含此值的表中仅获取 1 个结果?

根据另一列的字段值选择具有相同列值的行

从具有相同值的两个表中选择数据后结果重复

使用 JQuery 从具有 JSON 值的表中选择行

从每个 id 具有特定值的表中选择行

计算具有3个列值的行的出现次数相同的MySQL