> 데이터 베이스 > MySQL 튜토리얼 > PHP에서 PDO를 사용하여 MySQL 저장 프로시저에서 출력을 검색하는 방법은 무엇입니까?

PHP에서 PDO를 사용하여 MySQL 저장 프로시저에서 출력을 검색하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-08 05:03:02
원래의
388명이 탐색했습니다.

How to Retrieve Output from MySQL Stored Procedures Using PDO in PHP?

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

문제:

LAST_INSERT_ID() 값을 검색하는 방법 PHP 및 PDO를 사용하여 MySQL 저장 프로시저에서?

프로시저:

다음 PHP 코드를 고려하세요.

<?php
$stmt = $db->prepare("CALL simpleProcedure(:name,:returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11);
$stmt->execute();
echo $returnid;
?>
로그인 후 복사

이 코드는 겉보기에는 맞습니다. PDO의 오랜 버그로 인해 작동하지 않습니다.

해결책:

MySQL 프로시저에서 출력을 검색하려면 다음 단계를 따르세요.

1단계: 프로시저 실행

입력을 사용하여 프로시저를 실행하고 결과를 저장할 MySQL 변수를 지정합니다. 예:

<?php
$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
?>
로그인 후 복사

2단계: MySQL 변수 쿼리

별도의 쿼리를 실행하여 MySQL 변수를 선택합니다.

<?php
$stmt = $db->query("SELECT @returnid");
$result = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
$returnid = $result[0];
?>
로그인 후 복사

예:

다음 코드에는 다양한 매개변수 유형(IN, INOUT, OUT)에 대한 변수 사용을 보여주는 보다 자세한 예가 포함되어 있습니다.

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); 
     SET pOut_Param        := ABS(pInput_Param) * -3;                
END$$
로그인 후 복사

PHP 코드:

<?php
// Bind PHP variables
$phpInParam = 5;                  
$phpInOutParam = 404;
$phpOutParam = null;

// Prepare the SQL procedure call
$sql = "call demoSpInOut(:phpInParam, 
                         @varInOutParam, 
                         @varOutParam)";

$stmt = $db->prepare($sql);
$stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT);

// Set the SQL User INOUT variables
$db->exec("SET @varInOutParam = $phpInOutParam");

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

// Get the SQL variables into PHP variables
$sql = "SELECT @varInOutParam AS phpInOutParam,
               @varOutParam   AS phpOutParam
        FROM dual";

$results = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$phpInOutParam = $results[0]['phpInOutParam'];
$phpOutParam = $results[0]['phpOutParam'];

// Display the PHP variables
echo "phpInParam: $phpInParam<br>";
echo "phpInOutParam: $phpInOutParam<br>";
echo "phpOutParam: $phpOutParam<br>";
?>
로그인 후 복사

이 단계를 따르면 PDO를 사용하여 MySQL 저장 프로시저의 출력을 효과적으로 검색할 수 있습니다.

위 내용은 PHP에서 PDO를 사용하여 MySQL 저장 프로시저에서 출력을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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