>  기사  >  데이터 베이스  >  PHP에서 하나의 응답으로 여러 응답 데이터를 반환하는 방법은 무엇입니까?

PHP에서 하나의 응답으로 여러 응답 데이터를 반환하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 06:04:30332검색

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으로 문의하세요.