我已经调用了一个数据库,该数据库在CNT字段中有4个“行”数据。 (2,1,3,1)我想要总计这些,当我达到最大数字时,踢出另一个php页面。如果计数低于Max,则下面有另一个标题(“Location ...”)命令。
它不会被踢出 - 你能给我任何建议吗
$Count = 0;
$Max = 5;
While ($row = mysql_fetch_assoc($result)) {
$Count = $Count + $row["Cnt"];
If ($Count > $Max) {
header("Location: pareAbilities.asp?Who=".$Who."&Logcode=".$LogCode."&A=".$row['A']."&B=".$row['B']."&CNT=".$Count );
}
}
答案 0 :(得分:1)
If ($Count > $Max) {
header("Location: pareAbilities.asp?Who=".$Who."&Logcode=".$LogCode."&A=".$row['A']."&B=".$row['B']."&CNT=".$Count );
exit();
}
答案 1 :(得分:0)
不知道你在循环中做了什么......以下代码会更快更容易阅读。
http_build_query
构建您的重定向位置sprintf
整理你的串联die
以阻止其余页面进行可能的处理对你的回答很重要的是die
。还要确保在执行此操作之前没有其他输出发送到浏览器。只有在没有输出的情况下才能发送header
。如果您无法轻松停止输出,请尝试查看输出缓冲:ob_start
ob_flush
// SUM(CNT) as sum_cnt automagically does the calculation
$query = mysql_query("SELECT SUM(CNT) as sum_cnt, A, B, CNT FROM table");
$result = mysql_fetch_assoc($query);
if($result['sum_cnt'] > $Max) {
$querystring = http_build_query( // builds the query string for you
array(
'Who' => $Who,
'Logcode' => $LogCode,
'A' => $result['A'],
'B' => $result['B'],
'CNT' => $result['sum_cnt'],
)
);
header( // sprintf is very nice to keep long concat strings tidy
sprintf(
"Location: pareAbilities.asp?%s",
$querystring
)
);
die(); // Added die here to stop other code from executing
}