我被困在一个任务中,它只在两个数组的计数数组之间携带一个for-loop,然后选择查询来获取结果。我只是得到第一个匹配的结果,而不是我正在做的下一个record.what
<?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
发布于 2014-07-04 09:29:33
很肯定你还有额外的加薪。此外,如果您想要运行2个单独的查询,您的大括号在错误的位置。您还应该修复html,以便它是有效的。
<?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扩展在某些方面是不安全的,不再受支持。
发布于 2014-07-04 09:27:52
$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扩展了--这是不可取的。使用更新的替代方案,如:mysqli或PDO
发布于 2014-07-04 09:35:41
你的结构应该是这样的:
<?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_*
https://stackoverflow.com/questions/24570910
复制相似问题