【问题标题】:PHP loop through mysql results and countPHP循环遍历mysql结果并计数
【发布时间】:2015-07-24 17:22:04
【问题描述】:

我讨厌我无法弄清楚这一点,不幸的是我没有时间玩弄弄清楚,所以任何帮助都非常感谢。

我有一个包含字段 AREAID 和 AREANAME 的表 DATA。 我需要代码循环遍历结果 24 次,因为这是可用的 AREAID 数。但是,在表中,可能只有 10 个条目。所以,也许没有人为 AREAID 1 投入一些东西。我仍然希望它返回 AREAID1 并说未找到。当它循环并找到一个 AREAID 2 时,它会显示 AREANAME。

希望一切如泥泞。再次感谢您的帮助!

$query="select areaid,arename from data";
    $result = do_query($query);
{    $x=0;
     while($row = do_fetch_result($result)){
$x=$x+1;
$areaid=$row['areaid'];
$areaname=$row['arename'];

if ($areaid==$x) {
echo "AreaID:".$areaid;
 echo "found".$x."<br>";
  }
else {
echo "AreaID:".$areaid;
echo "not found".$x."<br>";
}}

【问题讨论】:

  • 你必须发布你遇到问题的代码(参见 Stackoverflow 介绍)。
  • while($row=sql_stuff){ if($row['x']== 'XX'){ // do something } else{...} }bay-sick-ah-lee.
  • 根据您的编辑...似乎我已经写了 ^ 所以...有什么问题,没有结果?错误?检查他们?
  • @Fred-ii- 因为例如第 1 行可能是 areaid 5,因为没有人输入 areaid 1、2、3 或 4,所以它们不会匹配。
  • 使用 fetchAll 接收列表。而不是while 使用经典的for 循环来计算区号。然后遍历获取的列表并输出匹配的 $areaids 然后。 (也请重新格式化您的代码。或在列表中描述目标/算法。)

标签: php mysql loops


【解决方案1】:

如果缺少x==1AREAID 1,并且$row['areaid'] ==2,那么您将找不到其余部分。

你没有找到 1,你说它丢失了,你增加 x,如果它是 2,它现在可能匹配 $row['areaid'],但你也会得到一个新行,丢失一个可能的 AREAID 2 等等。

怎么样

$x=0;
while($row = do_fetch_result($result)){
    $areaid=$row['areaid'];
    $areaname=$row['areaname'];
    while($x < $areaid) {
        echo "AreaID:".$areaid;
        echo "not found".$x."<br>";
        $x=$x+1;
    }
    echo "AreaID:".$areaid;
    echo "found".$x."<br>";
    $x=$x+1;
}
while($x <= 24) {
    echo "AreaID:".$areaid;
    echo "not found".$x."<br>";
    $x=$x+1;
}

【讨论】:

    【解决方案2】:

    你不能只遍历所有结果吗?如果您只有 ID 而没有价值,请执行以下操作?

    <?php
    $con=mysqli_connect("localhost","my_user","my_password","my_db");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    $sql="select areaid,arename from data";
    $result=mysqli_query($con,$sql);
    
    // Fetch all
    $result = mysqli_fetch_all($result,MYSQLI_ASSOC);
    
    foreach($result as $array){
    echo $array[areaId] . '=>';
    if(!empty($array[areaName])){
       echo $array[areaName] . '<br />';
    } else {
        echo 'Not Found<br />';
    }
    

    【讨论】:

    • 这里只显示数据库中的那些,不显示其他我需要显示的。
    • 你不能只用循环将空的添加到 db 中,并将它们保持在一起吗?
    猜你喜欢
    • 2015-10-05
    • 1970-01-01
    • 2016-06-07
    • 2010-12-17
    • 2012-02-05
    • 1970-01-01
    • 2015-05-09
    • 2013-08-12
    相关资源
    最近更新 更多