입력 및 출력 매개변수(INOUT 매개변수 제외)가 모두 필요한 MySQL에서 저장 프로시저를 호출하는 경우, PHP의 연결 및 명령문 인터페이스의 미묘한 차이를 이해하는 것이 중요합니다.
프로시저 설정
입력 매개변수를 가져와 출력 값을 계산하는 다음 MySQL 저장 프로시저를 고려하세요.
DELIMITER $$ DROP PROCEDURE IF EXISTS `test_proc`$$ CREATE PROCEDURE `test_proc`( in input_param_1 int, in input_param_2 int, in input_param_3 int, out output_sum int, out output_product int, out output_average int ) BEGIN set output_sum = input_param_1 + input_param_2 + input_param_3; set output_product = input_param_1 * input_param_2 * input_param_3; set output_average = (input_param_1 + input_param_2 + input_param_3) / 3; END$$ DELIMITER ;
PHP 연결 및 명령문
이 프로시저를 호출하려면 MySQLi용 절차적 또는 객체 지향 인터페이스를 사용할 수 있습니다.
절차적 인터페이스:
$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);
객체 지향 인터페이스:
$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();
매개변수 바인딩
두 인터페이스 모두 매개변수 바인딩 단계가 중요합니다. 입력 매개변수는 일반적으로 정수의 경우 'i'로 바인딩되고, 출력 매개변수는 '@' 뒤에 매개변수 이름을 사용하여 바인딩됩니다.
출력 검색
실행 후 CALL 문에서는 저장 프로시저가 채운 MySQL 사용자 변수(@sum, @product, @average)에서 값을 검색하기 위해 별도의 SELECT 문이 실행됩니다.
결론
MySQLi는 기본적으로 직접 출력 매개변수 바인딩을 지원하지 않지만 사용자 변수와 후속 SELECT 문을 사용하면 개발자가 입력 및 출력 매개변수가 모두 필요한 프로시저로 작업할 수 있습니다.
위 내용은 PHP에서 입력 및 출력 매개변수를 모두 사용하여 MySQL 저장 프로시저를 호출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!