在循环中插入数据,仅回显一次

时间:2018-11-18 22:14:04

标签: php mysql forms session foreach

我在foreach循环中有一个带有sql查询的php脚本,如果查询成功运行,它应该回显“成功”,但由于在循环中它多次回响“成功”,但我希望仅回显“成功”一次。我在这里看到了其他类似的线程,并且已经查看了这些线程,并尝试通过这些线程解决我的问题,但是我无法通过任何其他线程来解决此问题,因此请不要将其标记为重复。

无论如何,这是我的代码

<?php
session_start();
include('../../config/dbconf.php');

foreach($_POST['entry'] as $entryid) {
  $stmt = $authconn->prepare("UPDATE account SET dp = dp - ? WHERE username = ?");
  $stmt->bind_param("is", $_POST['price'], $_SESSION['classicusr']);
  if($stmt->execute()) {
    echo "Success";
  }else{
    echo "Failed";
  }
}
?>

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情吗?

此外,无需为循环的每次迭代做准备。

<?php
session_start();
include('../../config/dbconf.php');


$bError = false;

$authconn->prepare("UPDATE account SET dp = dp - ? WHERE username = ?");       

foreach($_POST['entry'] as $entryid) {   

     $stmt = $stmt->bind_param("is", $_POST['price'], $_SESSION['classicusr']);

     try{

    if(!$stmt->execute()) {
      $bError = true;
      // optional break and do not process further
      // break;
      $stmt = $stmt->errorInfo()
    }

  }catch (PDOException Exception){
      $bError = true;
      // additional erorr logging here. Could add to a delimetered string to report on later   } }

echo ($bError ? 'Failure' : 'Success' );

?>

答案 1 :(得分:-1)

看到您没有对Failed语句说什么,看起来像这样可以解决问题。它只需要设置一个简单的标志即可。

<?php
session_start();
include('../../config/dbconf.php');

$feedbackGiven = FALSE;
foreach($_POST['entry'] as $entryid) {
  $stmt = $authconn->prepare("UPDATE account SET dp = dp - ? WHERE username = ?");
  $stmt->bind_param("is", $_POST['price'], $_SESSION['classicusr']);
  if($stmt->execute()) {
    if (!$feedbackGiven)
    {
      echo "Success";
      $feedbackGiven = TRUE;
    }
  }else{
    echo "Failed";
  }
}
?>