我正在尝试根据 sql 查询的结果创建一个计数器。sql查询抓取一堆数据,然后逐行计算持续时间的天数,然后根据总天数计算当天有多少结果。我一直试图弄清楚为什么我的计数器没有保留任何值。我知道 sql 结果正在提取数据。有任何想法吗?
这个想法是查看开始日期和当前日期之间的天数是否大于 365 天然后启动一个计数器,如果它小于 365 天启动一个不同的计数器。
$anymatches=mysql_num_rows($result_id);
if ($anymatches > 0 )
{
while($row = mysql_fetch_array($result_id))
{
/*** Performing a calculation to get the number of days ***/
$calctoday = date("Y-m-d"); // trying to capture current date
$sd = start_check_gap($row[1],45); // getting a date from the sql query
$dateDiff = strtotime($calctoday) - strtotime($sd); // probably a better way to do this but calculating the difference between start date and current date.
$totaldays = floor($dateDiff/(60*60*24));
$data = $dateDiff / 86400;
$data = number_format($data, 0, '.', '');
if ($data > 365)
{
$pernumc1 = 0;
while($data > 365)
{
$pernum1 = $pernumc1;
$pernumc1++;
}
}
elseif ($data < 365)
{
$pernumc2 = 0;
while($data < 365)
{
$pernum2 = $pernumc2;
$pernumc2++;
}
}
else
{
$pernumc3 = 0;
while($data != FALSE)
{
$pernum3 = $pernumc3;
$pernumc3++;
}
}
谢谢大家在下面的评论是我的工作。我想发布我的正确版本,以防其他人遇到相同类型的问题。我能够根据您的无限循环评论找出问题所在,这两个问题。第一个问题是我的 sql 查询有错误。一旦我纠正了错误,我就会注意到你们提到的无限循环问题。基本上下面是我所做的。我删除了每个 if() 中的 while,并将开始的计数器变量 $pernumc1 移到了第一个 while 的上方,它就像一个魅力。看起来我仍然需要清理日期比较,但总的来说它有效。
$anymatches=mysql_num_rows($result_id);
if ($anymatches > 0 )
{
$pernumc1 = 0;
$pernumc2 = 0;
$pernumc3 = 0;
while($row = mysql_fetch_array($result_id))
{
$calctoday = date("Y-m-d");
$sd = start_check_gap($row[1],45);
$dateDiff = strtotime($calctoday) - strtotime($sd);
$totaldays = floor($dateDiff/(60*60*24));
$data = $dateDiff / 86400;
$data = number_format($data, 0, '.', '');
if ($data > 548)
{
$pernum1 = $pernumc1;
$pernumc1++;
}
elseif ($data > 365)
{
$pernum2 = $pernumc2;
$pernumc2++;
}
elseif ($data < 365)
{
$pernum3 = $pernumc3;
$pernumc3++;
}
}