Bagaimana untuk Mengembalikan Data Respons Berbilang dalam Satu Respons dalam PHP?

Susan Sarandon
Lepaskan: 2024-10-28 06:04:30
asal
331 orang telah melayarinya

How to Return Multiple Response Data in One Response in PHP?

Kembalikan Data Respons Berbilang dalam Satu Respons

Penyelesaian

Untuk menggabungkan data menjadi satu respons dan mengembalikan output yang dijangkakan, gunakan pendekatan berikut :

  1. Namakan semula pembolehubah userId (daripada $userId kepada $userid1) untuk menunjukkan bahawa anda boleh menyediakan lebih ramai pengguna jika perlu. Kemudian, lanjutkan klausa WHERE dalam pernyataan SQL dan tatasusunan pengikatan dengan sewajarnya.
  2. Ubah suai pernyataan SQL untuk mengira medan yang diperlukan:
<code class="sql">SELECT 
                subjects.userid,
                users.name AS username,
                (
                    SELECT id 
                    FROM tbsubjects 
                    WHERE userid = subjects.userid 
                    ORDER BY id ASC 
                    LIMIT 1
                ) AS subjectsid,
                (
                    SELECT name 
                    FROM tbsubjects 
                    WHERE 
                        userid = subjects.userid 
                        ORDER BY time DESC
                        LIMIT 1
                ) AS subjectname,
                (
                    SELECT IFNULL(SUM(points), 0) 
                    FROM tbsubjects 
                    WHERE 
                        userid = subjects.userid 
                        AND month = DATE_FORMAT(NOW(), "%c")
                ) AS activepts,
                IFNULL(SUM(subjects.points), 0) AS totalpts,
                (
                    SELECT IFNULL(SUM(points), 0) 
                    FROM tbsubjects 
                    WHERE 
                        userid = subjects.userid 
                        AND semester = 1
                ) AS sem1,
                (
                    SELECT IFNULL(SUM(points), 0) 
                    FROM tbsubjects 
                    WHERE 
                        userid = subjects.userid 
                        AND semester = 2
                ) AS sem2,
                (
                    SELECT IFNULL(SUM(points), 0) 
                    FROM tbsubjects 
                    WHERE 
                        userid = subjects.userid 
                        AND semester = 3
                ) AS sem3 
            FROM 
                tbsubjects AS subjects 
                LEFT JOIN tbusers AS users ON users.id = subjects.userid 
            WHERE subjects.userid = :userid1 
            GROUP BY subjects.userid 
            ORDER BY subjects.time DESC;</code>
Salin selepas log masuk
  1. Ambil pengguna ' senaraikan sebagai tatasusunan objek menggunakan kaedah fetchAll.
  2. Kendalikan keputusan:

Jika senarai pengguna kosong, kembalikan mesej ralat dalam format JSON:

<code class="php">$response->getBody()->write(
    '{
        "error": {
            "message":"Invalid"
        }
    }'
);</code>
Salin selepas log masuk

Jika tidak, kembalikan senarai pengguna yang dikodkan JSON.

Penggunaan

Dengan mengandaikan jadual subjek anda mempunyai struktur yang sama seperti dalam penerangan awal anda, anda boleh menggunakan skrip berikut untuk mengambil dan memformat data yang diperlukan:

<code class="php"><?php

$userid1 = 1; // Replace this with the actual user ID

// SQL statement
$sql = 'SELECT ... FROM ... WHERE subjects.userid = :userid1 GROUP BY ... ORDER BY ...';

// Bindings
$bindings = array(
    ':userid1' => $userid1
);

// Fetch users
$users = $dbAdapter->fetchAll($sql, $bindings);

// Handle results
if (empty($users)) {
    // Handle empty users list
} else {
    // Handle users list
}</code>
Salin selepas log masuk

Nota:

Skrip menganggap anda mempunyai kelas DbAdapter yang menyediakan kaedah untuk interaksi pangkalan data. Kelas ini harus mengendalikan penubuhan sambungan, penyediaan pernyataan dan pengambilan data.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Data Respons Berbilang dalam Satu Respons dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!