【问题标题】:mysqli query does not update in while loopmysqli 查询不会在 while 循环中更新
【发布时间】:2015-02-17 04:16:29
【问题描述】:

我正在构建一个脚本来显示一些 24 小时图表。我正在尝试制作 12 张图表。我收集的每五分钟数据集一张 24 小时(最后一小时)图表。我遇到了一个问题,我的 mysql 命令不会更新 $hour_position。我在 while 循环问题中阅读了许多 while 循环,并尝试构建一个 foreach 替代方案,还尝试重置查询数组,但这些都没有奏效。任何可以解决此问题的 cmets 或指向另一个线程的链接将不胜感激。 提前致谢。

$hour_position = 00;
$htime = -1;
$date = date('Y-m-d H:i:s');
$date = strtotime($date);
$date = strtotime($htime." day", $date);
$date = date('Y-m-d H:i:s',$date);

while($hour_position < 60){
    $price_history_qry = mysqli_query($con,"SELECT * FROM `dbTable` WHERE `server_time` > '$date' AND EXTRACT(MINUTE FROM `server_time`) like $hour_position ORDER BY `server_time` ASC");
    while($result = mysqli_fetch_array($price_history_qry)){
        //Create a couple of arrays to build a chart. 
    }
    //Build chart here
    echo $chart;
    $hour_position = $hour_position +05;
}

【问题讨论】:

  • 您是否尝试过使用str_pad(),因为您的0005 将默认为05? IE。 $hour_position = str_pad(00,2,'0',STR_PAD_LEFT); / $hour_position = str_pad($hour_position +05,2,'0',STR_PAD_LEFT);
  • 我没有,我试试。我其实没听说过那个。
  • 不幸的是,这也不起作用。
  • 原来我的代码的 //build chart here 部分中有一个 mysqli_close($con)。当我删除循环工作正常时。我通过使用基本变量测试循环并慢慢添加我之前的代码发现了这一点。不幸的是,我提交的代码中没有列出该问题,但问题已解决。对不起,追逐鹅。在我再次提交寻求帮助之前,我会查看此类故障排除。

标签: php mysqli while-loop


【解决方案1】:

尝试将 $hour_position 放在引号中,例如

      ' $hour_position ' 

或者你可以使用

      ". $hour_position ." 

【讨论】:

  • 在执行之前回显 $hour_position 和您的查询,看看它给出的值..!!
  • 表示它没有改变 $hour_position 的值?
  • 正确,仅在查询字符串中。它下面的任何地方都在变化。但不在 mysql_query 中。
  • 您是否尝试将其作为参数... $hour_position 作为参数..??
  • hmmm.. 我也没有听说过,但我找不到任何相关的东西。有链接吗?
【解决方案2】:

您的查询有一个小错误。单引号内的变量不会被评估为变量。检查this。您需要更改选择查询,如下所示。

$price_history_qry = mysqli_query($con,"SELECT * FROM `dbTable` WHERE `server_time` > '".$date."' AND EXTRACT(MINUTE FROM `server_time`) like ".$hour_position." ORDER BY `server_time` ASC");

而且我在您的代码中没有找到任何更新查询。正如您所说,您在 while 循环中使用更新查询。所以首先检查变量是否有值,然后检查它是否进入while循环,如下所示。

    $result = mysqli_fetch_array($price_history_qry)    
    var_dump($result);    
    while($result){
           //Create a couple of arrays to build a chart. 
           var_dump("entered");
   }

尝试使用var_dump()函数调试。

希望对你有帮助。

【讨论】:

  • 感谢大家的帮助。 @mahendran,我尝试了多种引号(并且再次尝试了您的建议)并且它没有改变。我使用 var_dump 发现我的查询变量 $hour_position 没有在 SELECT 查询中更新。我之前可能说错了。我没有使用 UPDATE 查询。我正在尝试更新查询中的变量。我正在尝试从数据库中提取 x 数据,处理它,显示它,然后 x + 05。通过从数据库中提取 x +05 的查询循环返回,处理它,显示它,然后再次 x +05 ......直到我达到 60 .
猜你喜欢
  • 2013-07-01
  • 2013-05-13
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2013-03-11
相关资源
最近更新 更多