Php 仅为foreach循环显示一条消息
当循环通过下面的Php 仅为foreach循环显示一条消息,php,foreach,Php,Foreach,当循环通过下面的foreach循环时,每次执行循环时,我都会得到一个echo输出。如何将这些消息减少到只有一条最终消息 即,如果只有“成功消息”则回显“成功”,如果出现错误(“失败”或“未保存任何内容”消息)则回显“失败”。一旦发生错误,循环不得停止,但应完全继续。最后我只想知道是发生了错误还是结果没有保存 if(!isset($_POST["submitbutton"])) { echo "Click this button to save your input."; } else {
foreach
循环时,每次执行循环时,我都会得到一个echo
输出。如何将这些消息减少到只有一条最终消息
即,如果只有“成功消息”
则回显“成功”
,如果出现错误(“失败”或“未保存任何内容”消息)
则回显“失败”
。一旦发生错误,循环不得停止,但应完全继续。最后我只想知道是发生了错误还是结果没有保存
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="
//SQL query
";
$query=mysqli_query($conn,$result);
if($query) {
echo "Success.<br>";
} else {
echo "Fail.<br>";
}
} else {
echo "Nothing saved.";
}
}
}
if(!isset($_POST[“submitbutton”])){
echo“单击此按钮保存您的输入。”;
}否则{
foreach($\u POST['tipp\u id']作为$key=>$tipp\u id){
如果($tipp_id>0){
$result=”
//SQL查询
";
$query=mysqli\u查询($conn,$result);
如果($query){
呼应“成功”
;
}否则{
回显“失败,
”;
}
}否则{
呼应“什么都没救”;
}
}
}
if(!isset($\u POST[“submitbutton”])){
echo“单击此按钮保存您的输入。”;
}否则{
$output=“”;
foreach($\u POST['tipp\u id']作为$key=>$tipp\u id){
如果($tipp_id>0){
$result=”
//SQL查询
";
$query=mysqli\u查询($conn,$result);
如果($query){
$output.=“成功。
”;
}否则{
$output.=“失败。
”;
}
}否则{
$output.=“未保存任何内容。”;
}
}
echo$输出;
}
您可以通过添加标志来实现这一点
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
$flag_success = True;
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="
//SQL query
";
$query=mysqli_query($conn,$result);
if($query) {
} else {
$flag_success = False;
}
} else {
echo "Nothing saved.";
}
}
if($flag_success)
echo "success";
else
echo "error";
}
基本思想是,我们假设所有事务在启动时都是成功的。现在,如果有错误,我们将布尔标志设置为false。然后最后检查foreach循环外部的状态标志,并相应地打印输出在循环之前设置一个变量,并在失败时更改它。然后再重复一遍
$msg = '';
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result = "//SQL query";
$query = mysqli_query($conn, $result);
if(!$query) {
$msg = 'Fail';
}
} else {
$msg = 'Nothing saved.';
}
}
}
if(!empty($msg)) {
echo $msg;
}
通常,如果要继续迭代数组(即遇到错误时不中断),可以执行以下操作:
$failureHappened = false;
foreach($arr as $elem) {
// do whatever with $elem to check "success" or "failure"
if (conditional_check($elem) == true) {
// success
} else {
// failure
$failureHappened = true;
}
}
if ($failureHappened) {
// error handling
} else {
// success case, if you need to do anything here
}
如果在循环结束时,$failureocated
仍然是false
,则没有错误。如果为true
,则会发生一个或多个错误/故障。如果您不特别关心是什么导致了这些错误,只关心发生了这些错误,那么这很有用。if(!isset($\u POST[“submitbutton”])){
echo“单击此按钮保存您的输入。”;
}否则{
$failscont=0;
foreach($\u POST['tipp\u id']作为$key=>$tipp\u id){
如果($tipp_id>0){
$result=”
//SQL查询
";
$query=mysqli\u查询($conn,$result);
如果(!$query){
$failscont++;
}
}否则{
$failscont++;
}
}
echo($failscont==0)?“成功:”:“失败:
”;
}
如果我理解正确,您希望在所有查询正常运行时打印“成功”,在查询失败时打印“失败”
为此,请使用一个临时变量来跟踪某个查询是否失败,并使用该变量进行打印。更新代码:
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
$temp = 0
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="
//SQL query
";
$query=mysqli_query($conn,$result);
if($query) {
$temp = 1 // set the temporary variable accordingly
//echo "Success.<br>";
} else {
$temp = 2
//echo "Fail.<br>";
}
} else {
echo "Nothing saved.";
}
}
if($temp == 1) {
echo "Success.<br>";
} elseif($temp == 2) {
echo "Fail.<br>";
}
}
if(!isset($_POST[“submitbutton”])){
echo“单击此按钮保存您的输入。”;
}否则{
$temp=0
foreach($\u POST['tipp\u id']作为$key=>$tipp\u id){
如果($tipp_id>0){
$result=”
//SQL查询
";
$query=mysqli\u查询($conn,$result);
如果($query){
$temp=1//相应地设置临时变量
//呼应“成功”
;
}否则{
$temp=2
//回显“失败,
”;
}
}否则{
呼应“什么都没救”;
}
}
如果($temp==1){
呼应“成功”
;
}elseif($temp==2){
回显“失败,
”;
}
}
您可以创建一个数组和一些计数变量来获取成功/失败计数,并获取哪个查询不成功
<?php
$failed_query = array(); // create an empty array to get which query fails
$failed_count = 0; // count to come to know how many query failed
$success_count = 0; // count to come to know how many query succeed
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
}else {
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="//SQL query";
$query=mysqli_query($conn,$result);
if($query) { // if query runs
$success_count++; // increase success counter
} else {
$failed_count++; // increase failed counter
$failed_query[] = $result; // insert failed query to the array
}
}
}
}
if($success_count > $failed_count){
echo "final output is success";
}else{
echo "final output is failed";
}
echo "query executed successfully(Number)".$success_count;
echo "query execution failed(Number)".$failed_count;
echo "Failed queries are <br/>";
echo "<pre/>";print_r($failed_query);
?>
注:-
1.你所期望的最终状态你将以成功或失败的形式获得
2.它将清楚地显示有多少查询成功执行,有多少查询失败
3.您还可以检查哪些查询失败以及原因(通过检查失败的数组)您可以使用错误计数器:
<?php
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
$errors = 0; //<========== ERROR COUNTER.
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="
//SQL query
";
$query=mysqli_query($conn,$result);
if($query) {
//echo "Success.<br>";
} else {
//echo "Fail.<br>";
$errors++; //<===========
}
} else {
//echo "Nothing saved.";
$errors++; //<============
}
}
if ( $errors == 0 )
echo "Success";
else echo "Fail";
}
?>
在for循环中设置一个变量,并使用它在for循环外设置消息。在foreach
之前,添加一个布尔变量,例如$fail\u occurrent=false
,默认为false
,然后在循环中遇到故障时,将其设置为true
。最后,检查值。到目前为止,您的代码和两个答案中似乎缺少的一件事是,如果出现错误,您不希望保存任何内容,这将需要一个事务。@JoseManuelAbarcaRodríguez这不会中断整个循环吗?即停止循环处理所有步骤?这不是我想要的:循环应该完成,然后检查消息,如果消息包含“失败”或“未保存任何内容”消息,我希望系统回显“失败”-否则“成功”。@chrissplague我刚刚编辑了问题并添加了此信息。感谢您的提示。如果运行1成功,运行2失败,运行3再次成功,该怎么办?虽然1次运行失败,但不会再次将$temp
设置为1(=成功)吗?就是这样。非常感谢。
<?php
$failed_query = array(); // create an empty array to get which query fails
$failed_count = 0; // count to come to know how many query failed
$success_count = 0; // count to come to know how many query succeed
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
}else {
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="//SQL query";
$query=mysqli_query($conn,$result);
if($query) { // if query runs
$success_count++; // increase success counter
} else {
$failed_count++; // increase failed counter
$failed_query[] = $result; // insert failed query to the array
}
}
}
}
if($success_count > $failed_count){
echo "final output is success";
}else{
echo "final output is failed";
}
echo "query executed successfully(Number)".$success_count;
echo "query execution failed(Number)".$failed_count;
echo "Failed queries are <br/>";
echo "<pre/>";print_r($failed_query);
?>
<?php
if(!isset($_POST["submitbutton"])) {
echo "Click this button to save your input.";
} else {
$errors = 0; //<========== ERROR COUNTER.
foreach($_POST['tipp_id'] as $key => $tipp_id) {
if($tipp_id > 0) {
$result="
//SQL query
";
$query=mysqli_query($conn,$result);
if($query) {
//echo "Success.<br>";
} else {
//echo "Fail.<br>";
$errors++; //<===========
}
} else {
//echo "Nothing saved.";
$errors++; //<============
}
}
if ( $errors == 0 )
echo "Success";
else echo "Fail";
}
?>