PHP에서 PDO를 사용하여 MySQL 저장 프로시저 변수를 어떻게 검색합니까?

Patricia Arquette
풀어 주다: 2024-11-09 03:20:02
원래의
384명이 탐색했습니다.

How do I retrieve MySQL stored procedure variables using PDO in PHP?

PHP에서 PDO를 사용하여 MySQL 저장 프로시저 변수 검색

MySQL 저장 프로시저에서 LAST_INSERT_ID() 값을 검색하는 것은 어려운 작업일 수 있습니다. . 온라인에 충분한 문서가 있음에도 불구하고 많은 개발자가 프로세스를 파악하기 어려운 경우가 많습니다. 이 문서의 목표는 PHP PDO를 사용하여 변수 값을 검색하는 단계별 가이드를 제공하여 이 문제를 이해하는 것입니다.

'IN', 'INOUT' 및 'OUT'이 포함된 PHP 프로시저 매개변수 매개변수

변수를 검색하는 핵심은 관련된 2단계 프로세스를 이해하는 것입니다. 먼저, 필요한 입력 매개변수와 결과를 저장할 변수를 사용하여 프로시저를 실행해야 합니다. 이후 별도의 쿼리가 실행되어 지정된 변수에서 값을 검색합니다.

PDO를 사용하여 MySQL 저장 프로시저를 검색하는 2단계 프로세스

이 프로세스를 보여주기 위해, 다음 시나리오를 고려해 보겠습니다.

  • 'IN', 'INOUT' 및 'OUT' 매개변수
  • 프로시저를 실행하고 변수 값을 검색하는 PHP 코드

SQL 프로시저:

CREATE PROCEDURE `demoSpInOutSqlVars`(IN     pInput_Param  INT,
                                      INOUT  pInOut_Param  INT,
                                      OUT    pOut_Param    INT)
BEGIN
    /*
     * Pass the full names of SQL User Variable for these parameters. e.g. '@varInOutParam'
     * These 'SQL user variables names' are the variables that Mysql will use for:
     *    1) finding values
     *    2) storing results
     *
     * It is similar to 'variable variables' in PHP.  
     */
     SET pInOut_Param      := ABS(pInput_Param) + ABS(pInOut_Param); /* always positive sum  */
     SET pOut_Param        := ABS(pInput_Param) * -3;                /* always negative * 3  */ 
END
로그인 후 복사

PHP 코드:

// DB Connection
$db = appDIC('getDbConnection', 'default'); // get the default db connection
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

// Set PHP Variables
$phpInParam = 5;
$phpInOutParam = 404; // PHP InOut variable
$phpOutParam = null; // PHP Out variable

// Define and Prepare the SQL procedure call
$sql = "call demoSpInOut(:phpInParam,
                         @varInOutParam, /* mysql variable name will be read and updated */
                         @varOutParam)"; /* mysql variable name that will be written to  */

$stmt = $db->prepare($sql);

// Bind PHP Variables and Set SQL Variables
$stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT);
$db->exec("SET @varInOutParam = $phpInOutParam"); // This is safe as it just sets the value into the MySql variable.

// Execute the procedure
$allOk = $stmt->execute();

// Get the SQL Variables into the PHP variables
$sql = "SELECT @varInOutParam AS phpInOutParam,
               @varOutParam AS phpOutParam
        FROM dual";
$results = current($db->query($sql)->fetchAll());

$phpInOutParam = $results['phpInOutParam'];
$phpOutParam = $results['phpOutParam'];

// Display the PHP variables
echo "phpInParam = " . $phpInParam . "\n";
echo "phpInOutParam = " . $phpInOutParam . "\n";
echo "phpOutParam = " . $phpOutParam . "\n";
로그인 후 복사

추가 참고 사항:

  • PHP 변수(이 경우 $phpInParam)를 SQL IN 매개 변수에 바인딩하는 것은 간단하며 PDO의 binParam() 메소드를 통해 수행됩니다.
  • PHP 변수를 SQL INOUT에 바인딩 및 OUT 매개변수는 지원되지 않으며 런타임 오류가 발생합니다.
  • SQL 프로시저 값을 검색하는 방법은 SQL 사용자 변수를 사용하여 결과를 보관하는 것입니다.
  • '에뮬레이트 준비 모드'에서 PDO 실행 '는 디버깅 및 오류에 권장됩니다. 탐지.

결론:

PHP PDO에서 MySQL 저장 프로시저 변수 검색은 프로시저를 실행하고 SQL 사용자 변수에서 값을 검색하는 것과 관련된 다각적인 프로세스입니다. 위에 설명된 단계를 따르면 개발자는 PDO를 사용하여 MySQL 저장 프로시저에서 필요한 변수에 효율적으로 액세스할 수 있습니다.

위 내용은 PHP에서 PDO를 사용하여 MySQL 저장 프로시저 변수를 어떻게 검색합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿