1. MySQL 저장 프로시저
저장 프로시저는 특정 비즈니스 로직을 구현하는 데 사용되는 미리 컴파일된 SQL 문 집합입니다. 애플리케이션 계층에서 유사한 비즈니스 논리를 작성하는 것과 비교하여 저장 프로시저를 사용하면 이러한 논리를 데이터베이스 수준으로 이동하여 네트워크 전송 시간을 절약하고 성능을 향상시킬 수 있습니다. 다음은 간단한 MySQL 저장 프로시저입니다.
CREATE PROCEDURE `my_proc`(IN `p_id` INT, OUT `p_name` VARCHAR(20)) BEGIN SELECT `name` INTO `p_name` FROM `users` WHERE `id` = `p_id`; END
이 저장 프로시저는 정수 매개변수 p_id
를 허용하고 해당 사용자 이름을 p_name
출력 매개변수에 할당합니다. 애플리케이션 계층에서 이 저장 프로시저를 호출할 때 p_id
매개변수만 전달하면 해당 사용자의 이름을 가져올 수 있습니다. 저장 프로시저를 사용하면 다음에 저장 프로시저가 호출될 때 MySQL 엔진이 이미 해당 프로시저를 기계어 코드로 컴파일했기 때문에 SQL 문을 다시 구문 분석할 필요가 없으므로 실행 효율성이 더 높다는 장점이 있습니다. p_id
,并将对应用户的姓名赋值给p_name
输出参数。在应用层调用该存储过程时,只需要传递参数p_id
,即可获得对应用户的姓名。使用存储过程的好处在于,下次调用该存储过程时,MySQL引擎已经将该过程编译为机器码,无需再次解析SQL语句,因此执行效率更高。
二、PHP调用MySQL存储过程
在PHP开发中,使用存储过程可以大大减少数据库操作的时间。下面是调用上述MySQL存储过程的PHP代码:
<?php // 连接MySQL数据库 $db = new mysqli('localhost', 'user', 'password', 'test'); if ($db->connect_errno) { die('Connect Error:' . $db->connect_error); } // 准备存储过程的参数和调用语句 $id = 1; $p_name = ''; $sql = "CALL my_proc($id, @p_name)"; // 执行调用语句 if ($db->multi_query($sql)) { // 获取输出参数 $db->next_result(); $result = $db->query("SELECT @p_name AS `name`"); $row = $result->fetch_assoc(); $p_name = $row['name']; // 输出查询结果 echo "User $id's name is $p_name"; } else { echo "Call Procedure Error:" . $db->error; } // 关闭数据库连接 $db->close(); ?>
在这段PHP代码中,首先连接MySQL数据库,随后准备存储过程的输入参数和调用语句。由于调用存储过程产生的查询结果是通过OUT参数输出的,因此需要执行多个SQL语句才能获取查询结果:首先执行调用语句,随后执行SELECT语句,最后获取输出参数p_name
p_이름
. 호출이 완료된 후 데이터베이스 연결을 닫으면 됩니다. 🎜위 내용은 php+mysql에서 저장 프로시저를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!