Как мне вернуть два объекта JSON с помощью одного вызова AJAX и функции PHP?
Вот HTML:
// bootstrap modal
<div id = "paymentViewModal" class = "modal fade">
<form method = "POST" id = "update_payment">
<input type = "text" class = "totalAmount" id = "totalAmount">
<br>
<input type = "text" class = "pdAmount" id = "pdAmount">
</form>
</div>
И JQuery:
$(document).on('click', '.payment_data', function() {
var pymnt_id = $(this).val();
$.ajax({
url:"sum_total.php",
method:"POST",
data:{pymnt_id:pymnt_id},
dataType:"json",
success:function(data){
// textboxt totalAmount
$('#totalAmount').val(data.total_order_value);
//textbox pdAmount
$('#pdAmount').val(data.paid_total);
$('#paymentViewModal').modal('show');
}
});
});
результат идеален для 1-го запроса, но я хочу выполнить оба запроса
// sum_total.php
if (isset($_POST["pymnt_id"]))
{
$query = mysqli_query($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
WHERE order_customer_id = '".$_POST["pymnt_id"]."'
");
$row = mysqli_fetch_array($query);
// if i run only one query its work fine
// want to get result from both tables
$query = "SELECT SUM(payment_amount) AS paid_total FROM payments
WHERE customer_id = '".$_POST["pymnt_id"]."'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
}
echo json_encode($row);
?>
Вы открыты для инъекций SQL. Параметризуйте свой запрос. Вы перезаписываете свой $row при выполнении запроса 2.






Добавьте свои строки в массив, а затем отобразите весь массив.
// sum_total.php
if (isset($_POST["pymnt_id"]))
{
$output = array();
$query = mysqli_query($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
WHERE order_customer_id = '".$_POST["pymnt_id"]."'
");
$row = mysqli_fetch_array($query);
$output['row1'] = $row;
// if i run only one query its work fine
// want to get result from both tables
$query = "SELECT SUM(payment_amount) AS paid_total FROM payments
WHERE customer_id = '".$_POST["pymnt_id"]."'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
$output['row2'] = $row;
}
echo json_encode($output);
?>
Не работает Пожалуйста, помогите
Вы выполняете перезапись на $row, поэтому старые данные перезаписываются. подумайте о том, чтобы сделать что-то вроде этого:
Также рассмотрите возможность использования подготовленных статов PDO.
примечание: непроверенный код
// sum_total.php
if (isset($_POST["pymnt_id"]))
{
$output = [];
// use prepared statements to prevent SQL injection
$query = $conn->prepare($conn, "SELECT SUM(sub_total) AS total_order_value FROM tbl_order2
WHERE order_customer_id = ?
");
$query->exec($_POST["pymnt_id"]);
$output["row1"] = $query->fetch();
// if i run only one query its work fine
// want to get result from both tables
$query = "SELECT SUM(payment_amount) AS paid_total FROM payments
WHERE customer_id = ?";
$query->exec($_POST["pymnt_id"]);
$output["row2"] = $query->fetch();
// echo inside the if statement
echo json_encode($output);
}
Надеюсь, поможет
создайте $ row, как это, $ row [0] => результат 1-го запроса и $ row [2] => результат 2-го запроса, а затем используйте его, или вы можете вернуться.