У меня есть следующий код:если код возвращает ошибку, не запустите запрос
<?php
require_once('./config.php');
include("includes/db.php");
$token = $_POST["token"];
$userId = $_POST["userId"];
$email = $_POST["userEmail"];
$courseProvider = $_POST["courseProvider"];
$amount = $_POST["priceFinal"];
$courseTitle = $_POST["courseTitle"];
$amount = $amount * 100;
$customer = \Stripe\Customer::create(array(
'email' => $email,
'card' => $token
));
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => $amount,
'currency' => 'cad'
));
$amountDisplay = $amount/100;
$course_paid = "Yes";
$course_paid_date = date("Y-m-d");
$insert_c = "insert into order_complete (course_title, course_price, course_buyer, course_provider, course_paid_date)
values ('$courseTitle','$amount','$email','$courseProvider','$course_paid_date')";
$run_c = mysqli_query($con, $insert_c);
$insert_c2 = "Update orders SET course_paid = '$course_paid' where course_id = '$userId'";
$run_c2 = mysqli_query($con, $insert_c2);
echo "<h4>Successfully charged $$amountDisplay to $email</h4>";
?>
, где я хочу только запросы, которые будут выполняться, если выполняются следующие пробеги успешно (без ошибок не возвращается)
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => $amount,
'currency' => 'cad'
));
Причина в том, что я не хочу записывать в базу данных, что платеж был успешным, когда полоса не смогла завершить транзакцию до ошибки.
спасибо за ваши объяснения и примеры. где, например, я бы подключил свои запросы, чтобы убедиться, что они работают только с успехом? – John
** Отредактированный мой ответ. ** Вы можете определить переменную внутри 'catch block', например:' $ error = true', а после блока 'try-catch' просто проверьте, не указана ли эта переменная' isset' и ее value is true: 'if (isset ($ error) && $ error) {.....}' –
Это сработало для вас? –