"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PDO를 사용하여 PHP의 MySQL 저장 프로시저에서 출력 변수를 검색하는 방법은 무엇입니까?

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

2024년 11월 18일에 게시됨
검색:413

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

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

목표: MySQL 저장 프로시저에서 LAST_INSERT_ID() 값을 가져와서 다음에 할당 PHP 변수.

문제 설명

PDO 바인딩을 사용하여 제공된 PHP 코드에도 불구하고 simpleProcedure 저장 프로시저에서 LAST_INSERT_ID() 출력 변수를 캡처하지 못합니다.

설명

PHP PDO의 MySQL 저장 프로시저에서 출력 변수를 가져오는 작업은 2단계 프로세스로 이루어집니다.

  1. 저장 프로시저를 실행하고 출력 변수를 MySQL 사용자 변수에 할당합니다.
  2. MySQL 사용자 변수를 쿼리하여 해당 값을 PHP 변수로 검색합니다.

해결책: 2단계 프로세스

1단계: 절차 실행

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();

:returnid 자리 표시자를 INOUT으로 바인딩하면 PDO는 PHP 변수를 프로시저에 전달할 뿐만 아니라 출력 변수의 값으로 업데이트합니다.

2단계: 출력 변수 검색

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

MySQL 사용자 변수 @returnid를 쿼리하여 해당 값을 $lastInsertId PHP 변수에 할당합니다.

참고

PHP 바인딩 MySQL 프로시저의 INOUT 및 OUT 매개변수에 대한 변수에는 런타임 오류가 발생할 수 있습니다. 변수를 IN 매개변수에만 바인딩하는 것이 좋습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3