"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Out 매개 변수를 사용하여 저장 프로시저를 호출할 때 PDO에서 "OUT 또는 INOUT 인수 ...는 변수가 아닙니다"라는 오류가 발생하는 이유는 무엇입니까?

Out 매개 변수를 사용하여 저장 프로시저를 호출할 때 PDO에서 "OUT 또는 INOUT 인수 ...는 변수가 아닙니다"라는 오류가 발생하는 이유는 무엇입니까?

2024년 11월 10일에 게시됨
검색:979

Why Does PDO Throw

PDO를 사용하여 Out 매개변수가 있는 저장 프로시저 호출

PDO를 사용하여 저장 프로시저를 호출하는 것은 원활한 프로세스가 될 수 있습니다. 그러나 out 매개변수를 사용하여 저장 프로시저를 활용하려고 하면 수수께끼 같은 오류가 나타날 수 있습니다.

SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger

해결책: PDO 특성

PDO 매뉴얼과 그에 수반되는 논의를 깊이 파고들어 PDO의 준비된 내부 변칙을 밝혀냅니다. 진술 기능. 문제의 핵심은 저장 프로시저 내에서 out 매개변수를 처리하는 데 있습니다.

이 문제를 해결하려면 특정 해결 방법이 필요합니다.

$stmt = $db->prepare("CALL SomeStoredProcedure(?, ?)"); 
$stmt->execute(array($someInParameter1, $someInParameter2));

대체 접근 방식

또 다른 옵션은 검색하는 SELECT 문을 포함하도록 저장 프로시저를 수정하는 것입니다. 저장 프로시저 실행 후 out 매개변수:

CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter); 
SELECT @someOutParameter;

이 수정된 접근 방식은 MySQL 내에서 저장 프로시저를 직접 호출할 때 관찰되는 동작을 모방합니다.

이러한 해결 방법을 수용하면 PDO를 사용하여 매개 변수 없이 저장 프로시저를 호출하는 것과 관련된 수수께끼의 오류가 발생합니다. 소멸되어 출력 매개변수 값의 원활한 실행 및 검색이 가능합니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3