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

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

Linda Hamilton
Linda Hamilton원래의
2024-11-06 09:57:02241검색

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 변수를 INOUT에 바인딩 MySQL 프로시저의 OUT 매개변수에는 런타임 오류가 발생할 수 있습니다. IN 매개변수에만 변수를 바인딩하는 것이 좋습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.