ホームページ >データベース >mysql チュートリアル >php+mysqlでストアドプロシージャを使用する方法

php+mysqlでストアドプロシージャを使用する方法

WBOY
WBOY転載
2023-05-30 09:07:311602ブラウズ

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 ステートメントを再度解析する必要がないため、実行効率が高くなる点です。

2. 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。呼び出しが完了したら、データベース接続を閉じるだけです。

以上がphp+mysqlでストアドプロシージャを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。