首頁 >資料庫 >mysql教程 >如何在 PHP 中的一個回應中傳回多個回應資料?

如何在 PHP 中的一個回應中傳回多個回應資料?

Susan Sarandon
Susan Sarandon原創
2024-10-28 06:04:30419瀏覽

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

在一個回應中傳回多個回應資料

解決方案

要將資料合併到單一回應並傳回預期輸出,請使用下列方法:

  1. 重新命名userId 變數(從$userId 到$userid1)以證明您可以根據需要提供更多使用者。然後,相應地擴展 SQL 語句中的 WHERE 子句和綁定陣列。
  2. 修改 SQL 語句以計算必要的欄位:
<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>
  1. 取得使用者' 使用 fetchAll 方法將清單作為物件陣列。
  2. 處理結果:

如果使用者清單為空,則傳回 JSON 格式的錯誤訊息:

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

否則,傳回 JSON 編碼的使用者清單。

用法

假設您的主題表與初始描述中的結構相同,您可以使用以下腳本獲取並格式化所需的資料:

<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>

注意:

該腳本假設您有一個提供資料庫互動方法的DbAdapter 類別。這個類別應該處理連接建立、語句準備和資料檢索。

以上是如何在 PHP 中的一個回應中傳回多個回應資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn