Heim  >  Artikel  >  Datenbank  >  Wie kann ich in PHP mehrere Antwortdaten in einer Antwort zurückgeben?

Wie kann ich in PHP mehrere Antwortdaten in einer Antwort zurückgeben?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 06:04:30410Durchsuche

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

Mehrere Antwortdaten in einer Antwort zurückgeben

Lösung

Um die Daten in einer einzigen Antwort zusammenzuführen und die erwartete Ausgabe zurückzugeben, verwenden Sie den folgenden Ansatz :

  1. Benennen Sie die Variable userId um (von $userId in $userid1), um zu zeigen, dass Sie bei Bedarf mehr Benutzer bereitstellen können. Erweitern Sie dann die WHERE-Klausel in der SQL-Anweisung und dem Bindungsarray entsprechend.
  2. Ändern Sie die SQL-Anweisung, um die erforderlichen Felder zu berechnen:
<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. Rufen Sie die Benutzer ab ' als Array von Objekten mithilfe der fetchAll-Methode auflisten.
  2. Verarbeiten Sie die Ergebnisse:

Wenn die Benutzerliste leer ist, geben Sie eine Fehlermeldung im JSON-Format zurück:

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

Andernfalls geben Sie die JSON-codierte Liste der Benutzer zurück.

Verwendung

Angenommen, Ihre Thementabelle hat die gleiche Struktur wie in Ihrer ursprünglichen Beschreibung, können Sie das folgende Skript verwenden um die erforderlichen Daten abzurufen und zu formatieren:

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

Hinweis:

Das Skript geht davon aus, dass Sie über eine DbAdapter-Klasse verfügen, die Methoden für Datenbankinteraktionen bereitstellt. Diese Klasse sollte den Verbindungsaufbau, die Anweisungsvorbereitung und den Datenabruf übernehmen.

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP mehrere Antwortdaten in einer Antwort zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn