개발자는 PHP 스크립트에서 저장 프로시저를 호출해야 하는 경우가 종종 있습니다. 저장 프로시저는 입력 및 출력 매개변수의 조합을 사용할 수 있으며, 입력 매개변수는 프로시저에 값을 제공하고 출력 매개변수는 프로시저에서 계산된 값을 수신합니다. 이 기사에서는 "inout" 매개변수를 제외한 입력 및 출력 매개변수를 모두 취하는 MySQL 저장 프로시저 호출에 중점을 둡니다.
불행히도 MySQLi 절차적 및 객체 지향 인터페이스는 출력 저장 프로시저 매개변수에 대한 기본 지원이 부족합니다. 해결 방법으로 MySQL 사용자 변수를 활용하여 출력 값을 수신하고 별도의 SELECT 문을 사용하여 검색할 수 있습니다. 사용자 변수와 SELECT 문을 구현하면 입력 및 출력 매개변수가 모두 포함된 저장 프로시저를 효과적으로 처리할 수 있습니다.
절차적 MySQLi 인터페이스를 사용하는 다음 PHP 코드를 고려하세요.
$procInput1 = 123; $procInput2 = 456; $procInput3 = 789; $mysqli = mysqli_connect(); $call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)'); mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3); mysqli_stmt_execute($call); $select = mysqli_query($mysqli, 'SELECT @sum, @product, @average'); $result = mysqli_fetch_assoc($select); $procOutput_sum = $result['@sum']; $procOutput_product = $result['@product']; $procOutput_average = $result['@average'];
이 예에서는 MySQL 사용자 변수(@sum, @product, @average)가 저장 프로시저에 정의되어 있습니다. mysqli_query("SELECT @sum, @product, @average")에 대한 호출은 저장 프로시저에 의해 설정된 값을 검색하고 이를 PHP 변수($procOutput_sum, $procOutput_product, $procOutput_average)에 할당합니다.
또는 객체 지향 MySQLi 인터페이스를 사용할 수 있습니다.
$procInput1 = 123; $procInput2 = 456; $procInput3 = 789; $mysqli = new mysqli(); $call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)'); $call->bind_param('iii', $procInput1, $procInput2, $procInput3); $call->execute(); $select = $mysqli->query('SELECT @sum, @product, @average'); $result = $select->fetch_assoc(); $procOutput_sum = $result['@sum']; $procOutput_product = $result['@product']; $procOutput_average = $result['@average'];
객체 지향 접근 방식은 prepare(), 바인딩_param(), 실행을 활용하는 유사한 패턴을 따릅니다. () 및 query() 메서드를 사용하여 저장 프로시저를 호출하고 사용자 변수를 통해 출력 값을 검색합니다.
MySQL 사용자 변수와 SELECT 문을 활용하여 PHP 개발자는 입력과 출력이 모두 필요한 저장 프로시저를 효과적으로 호출할 수 있습니다. 매개변수. 이 기술은 MySQLi 인터페이스의 기본 출력 매개변수 지원 부족에 대한 해결 방법을 제공합니다.
위 내용은 PHP에서 입력 및 출력 매개변수를 사용하여 MySQL 저장 프로시저를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!