Выполнение двух запросов select на php и кодирование их в формате json

Как мне вернуть два объекта 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);
?>

создайте $ row, как это, $ row [0] => результат 1-го запроса и $ row [2] => результат 2-го запроса, а затем используйте его, или вы можете вернуться.

Ved 05.07.2018 15:04

Вы открыты для инъекций SQL. Параметризуйте свой запрос. Вы перезаписываете свой $row при выполнении запроса 2.

user3783243 05.07.2018 15:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
43
2

Ответы 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);
?>

Не работает Пожалуйста, помогите

Faizan Khan 05.07.2018 15:17

Вы выполняете перезапись на $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);
}

Надеюсь, поможет

Другие вопросы по теме