【问题标题】:for-loop returns only last result - phpfor-loop 只返回最后一个结果 - php
【发布时间】:2016-06-27 12:40:15
【问题描述】:

我的 For 循环看起来像这样

for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) 
{
    $thisDate = date( 'Y-m-d', $i );
    $sql = "SELECT * FROM tablename WHERE date = '$thisDate'";
    $res = parent::_executeQuery($sql);
    $rs = parent::getAll($res);         

}

return($rs);

现在return($rs) 将只给我最后一条记录。如何在 for 循环中获取所有结果?

【问题讨论】:

  • 将结果存储在数组中 $rs[] = parent::getAll($res);
  • 您在这里使用什么数据库驱动程序?如果这是一个选项,或者至少是正确的转义方法,你真的应该使用准备好的语句。简单地将一个值转储到您的查询中是自找麻烦。

标签: php mysql for-loop


【解决方案1】:

你也可以这样试试,

$sql = "SELECT * FROM tablename WHERE date BETWEEN  '".date('Y-m-d',$startTime)."' AND  '".date('Y-m-d',$endTime)."'";
$res = parent::_executeQuery($sql);
$rs = parent::getAll($res);
return($rs);

这不需要循环,您将在单个查询中获得所有结果。

【讨论】:

    【解决方案2】:

    你使用数组 像这样

    $rs=array();
    for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) 
    {
    $thisDate = date( 'Y-m-d', $i );
    $sql = "SELECT * FROM tablename WHERE date = '$thisDate'";
    $res = parent::_executeQuery($sql);
    $rs[]  = parent::getAll($res);         
    
    }
    
    return($rs);
    

    【讨论】:

      【解决方案3】:
      $rs=array();
      for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) 
      {
          $thisDate = date( 'Y-m-d', $i );
          $sql = "SELECT * FROM tablename WHERE date = '$thisDate'";
          $res = parent::_executeQuery($sql);
          array_push($rs,parent::getAll($res));      
      
      }
      
      return($rs);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-05
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        相关资源
        最近更新 更多