Почему 400030 не выдает logi c, который больше 400000? - PullRequest
0 голосов
/ 11 июля 2020

Я написал код для вывода "предел достигнут", если A больше, чем B. Но если A равно 400030, а B равно 400000, он не показывает никаких выходных данных. Если A больше, чем это, скажем 400060 или любое другое число выше, он показывает результат .. Пожалуйста, как мне это объяснить? Фрагмент кода, демонстрирующий, что я имею в виду, следующий:

<?php
include_once('db.php');
error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
 
if(!isset($_SESSION['login'])) {
    echo ("<script>location.href='../clogin/'</script>");
    die();
}
   
if(isset($_POST['transfer'])) {
    $username = $_SESSION['login'];
    $transAmount = $_POST['transAmount'];
    $totalTrans = $transAmount + 30;
    $sql = "SELECT * FROM customer WHERE username = ?";
    
    $stmt = $connection->prepare($sql); 
    $stmt->bind_param('s', $username);
    $stmt->execute();
    $result = $stmt->get_result();

    if(!$result) {
        die('ERROR:' . mysqli_error($connection));
    }
    $count =  $result->num_rows;
 
     if($count == 1) {  
        while ($row = $result->fetch_assoc()){
            $accTrans = $totalTrans + $row['dailyTrans'];
     
            $sql2 = "UPDATE customer set dailyTrans=? WHERE  username=?"; 
            $stmt = $connection->prepare($sql2); 
            $stmt->bind_param('is', $accTrans,$username);
            $stmt->execute();
            if(!$stmt) {
                die('network problem');
            }
     
            if($row['dailyTrans'] >= $row['dailyLimit'])  {
                echo '<script>swal.fire("FAILED!!", "<strong>You have reached the total amount you can send per day.</strong><hr><br/><i>Visit your bank to increase transfer limit.</i>", "error");
    
                    window.setTimeout(function(){
                        window.location.href = "transfer1.php";}
                    , 1700);
                </script>'; 
                //exit(); 
            } else {
                echo"";  
            }
        }//while loop
    }//count
}//submit
?>

Снова мой вопрос Резюме

Значение для $row['dailyTrans'] is 400030 и значение $row['dailyLimit'] is 400000

Предполагается, что это выводит ошибку, но не работает ... если $row['dailyTrans'] больше 400030, оно выводится. Что за logi c стоит за этим?.

Пожалуйста, будьте любезны с вашими комментариями, как обычно. Спасибо . Оба значения являются целыми числами !!

1 Ответ

0 голосов
/ 11 июля 2020

Мне кажется, вы добавляете $_POST['transAmount'] после запроса к базе данных для пользователя.

Чтобы получить текущий dailyTrans, вам нужно будет либо

  • Выбрать снова от клиента (получение обновленного dailyTrans)

    OR

  • сравните dailyLimit с $accTrans :: (if ($accTrans >= $row['dailyLimit'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...