PHP PDO의 MySQL 저장 프로시저에서 변수 검색
이 논의의 목적은 PHP를 사용하여 MySQL 저장 프로시저에서 변수를 검색하는 포괄적인 솔루션을 제공하는 것입니다. PDO.
문제
PHP PDO의 MySQL 저장 프로시저에서 LAST_INSERT_ID()를 얻으려고 시도하는 동안 구현된 코드가 작동하지 않는 것을 발견했습니다.
해결책
안타깝게도 이 문제는 PHP가 OUT 매개변수가 있는 MySQL 저장 프로시저를 처리할 때 발생하는 오래된 버그로 인해 발생할 수 있습니다.
다단계 프로세스
해결 방법에는 2단계 프로세스가 포함됩니다.
변수를 사용한 호출 절차
제공된 PHP 코드에서 문제가 있는 바인딩을 다음으로 바꿉니다.
$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
이것은 PHP 변수 $name을 입력 매개 변수에 바인딩하고 생성합니다. 출력을 저장하기 위한 @returnid라는 MySQL 변수. @ 기호는 returnid가 MySQL 변수임을 나타냅니다.
변수 선택
프로시저 실행 후 다음 쿼리를 사용하여 @returnid 변수를 검색합니다.
$result = $db->query("SELECT @returnid AS result_id"); $row = $result->fetch(); $returnid = $row['result_id'];
OUT 매개변수를 사용한 대체 접근 방식
INOUT 및 OUT 매개변수 사용을 포함하여 보다 완전한 솔루션이 필요한 경우 다음 코드 샘플과 팁을 활용할 수 있습니다.
팁:
샘플 코드:
SQL 프로시저:
CREATE PROCEDURE demoSpInOutSqlVars(IN pInput_Param INT, INOUT pInOut_Param INT, OUT pOut_Param INT) BEGIN SET pInOut_Param = ABS(pInput_Param) + ABS(pInOut_Param); SET pOut_Param = ABS(pInput_Param) * -3; END
PHP 코드:
$phpInParam = 5; $phpInOutParam = 404; $phpOutParam = null; $stmt = $db->prepare("CALL demoSpInOutSqlVars(:phpInParam, @varInOutParam, @varOutParam)"); $stmt->bindParam(':phpInParam', $phpInParam, PDO::PARAM_INT); $db->exec("SET @varInOutParam = $phpInOutParam"); $stmt->execute(); $result = $db->query("SELECT @varInOutParam AS phpInOutParam, @varOutParam AS phpOutParam FROM dual"); $row = $result->fetch(); $phpInOutParam = $row['phpInOutParam']; $phpOutParam = $row['phpOutParam'];
위 내용은 PHP PDO의 MySQL 저장 프로시저에서 변수를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!