首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未获得下一个结果的foreach循环

未获得下一个结果的foreach循环
EN

Stack Overflow用户
提问于 2014-07-04 09:22:25
回答 3查看 96关注 0票数 0

我被困在一个任务中,它只在两个数组的计数数组之间携带一个for-loop,然后选择查询来获取结果。我只是得到第一个匹配的结果,而不是我正在做的下一个record.what

代码语言:javascript
复制
<?php 
//db cnnect
//fetch between 06:00:00 to 08:30:00   09:00:00 to 10:00:00
$date=array('06:00:00','09:00:00');
$date1=array('08:30:00','10:00:00');

$count=count($date);
for($i=0;$i<$count;$i++){

$sql="SELECT count(*) AS test FROM fo WHERE DATE_FORMAT(sys_time,'%H:%m:%i') BETWEEN DATE_FORMAT(sys_time,'$date[$i]') AND  DATE_FORMAT(sys_time,'$date1[$i]')";
$i=$i+1;
}
$query=mysql_query($sql);
if(!$query){
die('could not connect'.mysql_error());
}
echo'<html>
<head>
<title>Count User Info TimeWise</title>
</head>
<h1>Count User</h1>
<table border="3" cellspacing="2">
<tr>
<th>Count</th>';

while($row=mysql_fetch_array($query)) {
echo "<tr>";
$str=$row['test'];
$subcategory = explode(',', $str);
foreach($subcategory as $value) {
echo "<td>" . $value . "</td>"; 
}}
echo "</table>";      
echo "</html>";
?>

它正确地获取6-8之间的第一个记录,而不是9-10之间的下一个记录。我正在做什么wrong.and如何获得it.thanks

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-04 09:29:33

很肯定你还有额外的加薪。此外,如果您想要运行2个单独的查询,您的大括号在错误的位置。您还应该修复html,以便它是有效的。

代码语言:javascript
复制
<?php 
//db cnnect
//fetch between 06:00:00 to 08:30:00   09:00:00 to 10:00:00
$date=array('06:00:00','09:00:00');
$date1=array('08:30:00','10:00:00');

echo'<html>
    <head>
        <title>Count User Info TimeWise</title>
    </head>
    <body>
        <table>
        <tr>
            <th>Count</th>
        </tr>';
$count=count($date);
for($i=0;$i<$count;$i++){

    $sql="SELECT count(*) AS test FROM fo WHERE DATE_FORMAT(sys_time,'%H:%m:%i') BETWEEN DATE_FORMAT(sys_time,'$date[$i]') AND  DATE_FORMAT(sys_time,'$date1[$i]')";
    //This is unneccessary since you increment it in your for loop
    //$i=$i+1;
    //Moving this down so it prints both query results
    //}
    $query=mysql_query($sql);
    if(!$query){
        die('could not connect'.mysql_error());
    }

    while($row=mysql_fetch_array($query)) 
    {
        echo "<tr>";
        $str=$row['test'];
        $subcategory = explode(',', $str);
        foreach($subcategory as $value) 
        {
            echo "<td>" . $value . "</td>";
        }
        echo "</tr>";
    } 
//New }
}
echo "</table>";      
echo "</html>";
?>

您还应该考虑升级到PDO,因为mysql扩展在某些方面是不安全的,不再受支持。

票数 3
EN

Stack Overflow用户

发布于 2014-07-04 09:27:52

  • 删除for循环中的增量行,因为它已在for语句中实现。
  • 将所有代码包装到第一个for循环。

代码语言:javascript
复制
$count=count($date);
for($i=0; $i < $count; $i++) {
    $sql="SELECT count(*) AS test FROM fo WHERE DATE_FORMAT(sys_time,'%H:%m:%i') BETWEEN DATE_FORMAT(sys_time,'$date[$i]') AND  DATE_FORMAT(sys_time,'$date1[$i]')";
    // $i = $i + 1; delete this line

    // rest of your handling code

    $query=mysql_query($sql);
    if(!$query){
        die('could not connect'.mysql_error());
    }
    echo'<html>
           <head>
             <title>Count User Info TimeWise</title>
           </head>
           <body>
             <table>
               <tr><th>Count</th></tr>';

    while($row=mysql_fetch_array($query)) {
        echo "<tr>";
        $subcategory = explode(',', $row['test']);
        foreach($subcategory as $value) {
            echo "<td>" . $value . "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";      
    echo "</html>";
}

不要再使用mysql扩展了--这是不可取的。使用更新的替代方案,如:mysqliPDO

票数 1
EN

Stack Overflow用户

发布于 2014-07-04 09:35:41

你的结构应该是这样的:

代码语言:javascript
复制
<?php 
echo'<html>
       <head>
          <title>Count User Info TimeWise</title>
       </head>
       <body>
            <table>
               <tr>
                 <th>Count</th>
               </tr>';

//db cnnect
//fetch between 06:00:00 to 08:30:00   09:00:00 to 10:00:00
$date=array('06:00:00','09:00:00');
$date1=array('08:30:00','10:00:00');

$count=count($date);
for($i=0;$i<$count;$i++){

     $sql="SELECT count(*) AS test FROM fo WHERE DATE_FORMAT(sys_time,'%H:%m:%i')  BETWEEN DATE_FORMAT(sys_time,'$date[$i]') AND  DATE_FORMAT(sys_time,'$date1[$i]')";


     $query=mysql_query($sql);
     if(!$query){
          die('could not connect'.mysql_error());
     }


     while($row=mysql_fetch_array($query)) {
         echo "<tr>";
         $str=$row['test'];
         $subcategory = explode(',', $str);
         foreach($subcategory as $value) {
               echo "<td>" . $value . "</td>"; 
         }
         echo '</tr>';
     }
}
echo "</table></body>";      
echo "</html>";
?>

注意: mysql_*不推荐使用mysqli_*

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24570910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档