【问题标题】:check same value while loop在循环中检查相同的值
【发布时间】:2013-12-06 09:46:56
【问题描述】:

如何检查两个特定列上的相同值的 while 循环? 如果两列上存在相同的值,则输出应该与没有匹配的情况不同。这是我现在的 while 语句:

数据库连接:

<?php
$sql="SELECT id, name, phone, primaryfile FROM `users`";
$stmt=$generic->query($sql);
$count = $stmt->rowCount();
?>

While 语句:

<?
while($data = $stmt->fetch(PDO::FETCH_ASSOC)) :
?>

输出:

<table>
    <tbody>
        <tr>
            <td><?php echo $data['id'];?>;<?php echo $data['name'];?>;<?php echo $data['phone'];?>;<?php echo $data['primaryfile'];?>;</td>
        </tr>
    </tbody>
</table>

这会将每个结果输出为我表上的一行。

但是如果在多行的列 idprimaryfile 上存在相同的值,那么它应该将这些行合并为一行并输出如下:

<table>
        <tbody>
            <tr>
                <td><?php echo $data['id'];?>;<?php echo $data['name'];?>;<?php echo $data['name of second row having same id and primaryfile'];?>;<?php echo $data['phone'];?>;<?php echo $data['phone of second row having same id and primaryfile'];?>;<?php echo $data['primaryfile'];?>;</td>
            </tr>
        </tbody>
</table>

提前致谢

【问题讨论】:

  • 请解释清楚。
  • 您可能应该在数据库级别进行此类检查
  • 编辑你的查询有点像'SELECT id, name, phone, primaryfile FROM users ORDER BY id ASC'
  • 您使用的是哪个 DBMS?

标签: php sql loops


【解决方案1】:

将您的查询更改为 GROUP BY idprimaryfile 并在 @987654325 上使用 GROUP CONCAT(或在没有它的数据库系统上的替代方法;您尚未指定您正在使用的) @和phone

SELECT
  id,
  GROUP_CONCAT(name SEPARATOR '; ') AS name,
  GROUP_CONCAT(phone SEPARATOR '; ') AS phone,
  primaryfile
FROM
  users
GROUP BY
  id,
  primaryfile

【讨论】:

  • 谢谢,效果很好。我忘了这可以在我的数据库查询中实现。
【解决方案2】:

第一件事 - 编辑您的查询

<?php
$sql="SELECT id, name, phone, primaryfile FROM `users` ORDER BY id ASC";
$stmt=$generic->query($sql);
$count = $stmt->rowCount();
?>

然后您可以通过保留以前的记录来跟踪您的循环:-

在while循环中:

<?
$previous_id = $previous_pfile = 0;
while($data = $stmt->fetch(PDO::FETCH_ASSOC)) :
    $new_id = $data['id'];
    $new_primary_file= $data['primaryfile'];

    if($previous_id == $new_id && $previous_pfile == $new_primary_file){
      // do your stuff for multiple rows   
    }else{
       // do your steps for single records
       $previous_id = $new_id;
       $previous_pfile =  $new_primary_file;
    }   
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2016-11-07
    相关资源
    最近更新 更多