>  기사  >  데이터 베이스  >  php+mysql에서 저장 프로시저를 사용하는 방법

php+mysql에서 저장 프로시저를 사용하는 방법

WBOY
WBOY앞으로
2023-05-30 09:07:311583검색

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(&#39;localhost&#39;, &#39;user&#39;, &#39;password&#39;, &#39;test&#39;);
if ($db->connect_errno) {
    die(&#39;Connect Error:&#39; . $db->connect_error);
}

// 准备存储过程的参数和调用语句
$id = 1;
$p_name = &#39;&#39;;
$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[&#39;name&#39;];

    // 输出查询结果
    echo "User $id&#39;s name is $p_name";
} else {
    echo "Call Procedure Error:" . $db->error;
}

// 关闭数据库连接
$db->close();
?>

在这段PHP代码中,首先连接MySQL数据库,随后准备存储过程的输入参数和调用语句。由于调用存储过程产生的查询结果是通过OUT参数输出的,因此需要执行多个SQL语句才能获取查询结果:首先执行调用语句,随后执行SELECT语句,最后获取输出参数p_name

🎜2. PHP는 MySQL 저장 프로시저를 호출합니다🎜🎜🎜PHP 개발에서 저장 프로시저를 사용하면 데이터베이스 작업 시간을 크게 줄일 수 있습니다. 다음은 위의 MySQL 저장 프로시저를 호출하는 PHP 코드입니다. 🎜rrreee🎜 이 PHP 코드에서는 먼저 MySQL 데이터베이스를 연결한 후 저장 프로시저의 입력 매개변수와 호출문을 준비합니다. 저장 프로시저를 호출하여 생성된 질의 결과는 OUT 매개변수를 통해 출력되므로 질의 결과를 얻기 위해서는 여러 개의 SQL 문을 실행해야 한다. 먼저 호출 문을 실행한 다음 SELECT 문을 실행하고 마지막으로 출력 매개변수 p_이름. 호출이 완료된 후 데이터베이스 연결을 닫으면 됩니다. 🎜

위 내용은 php+mysql에서 저장 프로시저를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제