PDO를 사용하여 OUT 매개변수로 저장 프로시저 호출
데이터베이스 프로그래밍에서 저장 프로시저는 복잡한 데이터베이스 작업을 캡슐화하는 데 필수적입니다. PDO를 사용하여 저장 프로시저에서 출력을 검색하는 것은 어려울 수 있습니다.
문제:
PDO를 사용하여 OUT 매개변수가 있는 저장 프로시저를 호출하면 다음과 같은 오류가 발생할 수 있습니다.
PDOException: 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는 OUT 매개변수가 별도의 쿼리를 사용하여 검색될 것으로 예상합니다. 다음 단계에서는 올바른 접근 방식을 설명합니다.
PDO 문을 준비합니다.
$stmt = $db->prepare("CALL proc_OUT(?)");
바인드 OUT 매개변수:
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
저장 프로시저 실행:
$stmt->execute();
OUT 매개변수 쿼리:
$stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0];
예:
다음은 OUT 매개변수를 사용하여 저장 프로시저를 호출하는 예입니다.
$db = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); // Stored procedure definition $sql = "CREATE PROCEDURE proc_OUT (OUT var1 VARCHAR(100)) BEGIN SET var1 = 'This is a test'; END"; $db->query($sql); // Call the stored procedure $stmt = $db->prepare("CALL proc_OUT(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); $stmt->execute(); // Query the OUT parameter $stmt2 = $db->query("SELECT @return_value"); $row = $stmt2->fetch(PDO::FETCH_NUM); $return_value = $row[0]; echo $return_value; // Output: 'This is a test'
이 접근 방식을 따르면 PDO를 사용하여 OUT 매개 변수가 있는 저장 프로시저를 성공적으로 호출할 수 있습니다.
위 내용은 PDO를 사용하여 OUT 매개변수가 있는 저장 프로시저에서 출력을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!