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('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。呼び出しが完了したら、データベース接続を閉じるだけです。
以上がphp+mysqlでストアドプロシージャを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。