현재 위치: > 최신 기사 목록> pdostatement :: nextrowset을 통해 저장 프로 시저의 출력 매개 변수 세트를 읽는 방법?

pdostatement :: nextrowset을 통해 저장 프로 시저의 출력 매개 변수 세트를 읽는 방법?

gitbox 2025-09-08
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,주로 데모 환경 준비에 사용됩니다</span></span><span>
</span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb;charset=utf8mb4'</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$options</span></span><span> = [
    PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>,
    PDO::</span><span><span class="hljs-variable constant_">ATTR_DEFAULT_FETCH_MODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span>,
];
</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"데이터베이스 연결에 실패했습니다: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>());
}
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1>통과하는 방법 <code></span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">nextRowset</span></span><span>

PHP 코드 예제

 &lt;?php
</span><span><span class="hljs-comment">// 매개 변수 바인딩을 저장 프로 시저를 호출하십시오</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"CALL sp_get_user_info(:user_id)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bindValue</span></span><span>(</span><span><span class="hljs-string">':user_id'</span></span><span>, </span><span><span class="hljs-number">123</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">PARAM_INT</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// 첫 번째 결과 세트를 읽으십시오:사용자 정보</span></span><span>
</span><span><span class="hljs-variable">$userInfo</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetchAll</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"사용자 정보:\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$userInfo</span></span><span>);

</span><span><span class="hljs-comment">// 다음 결과 세트로 이동하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">nextRowset</span></span><span>()) {
    </span><span><span class="hljs-comment">// 두 번째 결과 세트를 읽으십시오:게시물 수</span></span><span>
    </span><span><span class="hljs-variable">$postCount</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetchColumn</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"게시물 수:<span class="hljs-subst">$postCount</span></span></span><span>\n";
}
?&gt;

핵심 요점 요약

  • nextrowset ()는 다음 결과 세트를 가리키는 데 사용되며 읽을 결과 세트가 더 많음을 나타 내기 위해 true를 반환합니다.
  • 현재 결과 세트의 데이터를 읽으려면 fetch ()fetchall ()을 호출하십시오.
  • 저장 프로 시저는 여러 결과 세트를 반환 할 수 있으며 출력 매개 변수는 때때로 SELECT 문에서 반환되며 NEXTROWSET () 를 통해 트래버스 할 수 있습니다.
  • PDO를 사용할 때는 연결 및 실행의 보안을 보장하기 위해 예외를 포착해야합니다.

요약

pdostatement :: nextrowset ()을 사용하면 저장된 프로 시저로 반환 된 여러 결과 세트를 쉽게 읽을 수 있습니다. 특히 출력 매개 변수 또는 여러 쿼리를 처리하는 데 적합합니다. 이 방법을 합리적으로 사용하면 PHP가 데이터베이스 저장 프로 시저와 상호 작용할 수 있습니다.