Вставить данные в цикл и повторить только один раз

0

У меня есть PHP-скрипт с SQL-запросом, который находится внутри цикла foreach, и если запрос успешно выполняется, он должен отображать "Success", но, поскольку он находится внутри цикла, он повторяет "success" несколько раз, но я хочу, чтобы отображался только "success" один раз. Я видел другие подобные темы здесь, и я смотрел на них и пытался решить мою проблему из этих потоков, но я не смог решить эту проблему из других потоков, поэтому, пожалуйста, не отмечайте это как дубликат.

Во всяком случае, вот мой код

<?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";
  }
}
?>
Теги:
forms
foreach
session

2 ответа

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' );

?>
  • 0
    Хорошо, спасибо, я попробую это
  • 0
    Я должен был сделать некоторые правки к сообщению, это была ошибка об улове (исключение PDOException)
Показать ещё 3 комментария
-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";
  }
}
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню