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