Um die Daten in einer einzigen Antwort zusammenzuführen und die erwartete Ausgabe zurückzugeben, verwenden Sie den folgenden Ansatz :
<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>
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.
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>
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!