Web アプリケーションの急速な発展に伴い、データベースの需要も増加しています。 PHP は非常に柔軟で使いやすいため、Web アプリケーションで最も広く使用されている言語の 1 つになりました。データベース ストアド プロシージャは、大量のデータを効率的に処理する必要があるアプリケーションにとって非常に重要なツールとなっています。ストアド プロシージャを使用すると、開発者は複雑な SQL コードをデータベースにカプセル化し、コードをより適切に管理し、パフォーマンスを向上させることができます。
この記事では、PHP を使用してデータベース ストアド プロシージャを作成して呼び出す方法を説明します。デモンストレーションには MySQL データベースを使用します。
1. データベースとテーブルの作成
まず、MySQL データベースとデータを保存するためのいくつかのテーブルを作成する必要があります。ここでは、「test」という名前のデータベースを作成し、users とorders という 2 つのテーブルを作成します。users テーブルにはユーザー情報が含まれ、orders テーブルには注文情報が含まれます。ユーザー テーブルを作成する SQL ステートメントは次のとおりです:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
同様に、順序テーブルを作成する SQL ステートメントは次のとおりです:
CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product_name` varchar(255) NOT NULL, `price` decimal(10,2) NOT NULL, `quantity` int(11) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2. ストアド プロシージャを作成します
このステップでは、ユーザー データを users テーブルに挿入するための単純なストアド プロシージャを作成します。このストアド プロシージャは、名前、電子メール、パスワードの 3 つのパラメータを受け取り、新しいユーザー レコードを挿入します。
このストアド プロシージャを作成するための PHP コードは次のとおりです:
$db = new mysqli('localhost', 'root', '', 'test'); if ($db->connect_error) { die('连接数据库失败: ' . $db->connect_error); } // 创建存储过程 $sql = "CREATE PROCEDURE `insert_user` (IN name VARCHAR(255), IN email VARCHAR(255), IN password VARCHAR(255)) BEGIN INSERT INTO `users` (`name`, `email`, `password`) VALUES (name, email, password); END"; $db->query($sql); echo "存储过程已创建";
この例では、insert_user という名前のストアド プロシージャを作成し、名前、電子メール、パスワードの 3 つの入力パラメータを定義します。ストアド プロシージャ内で、これらのパラメータを users テーブルに挿入するだけです。これで、$db->query() メソッドを通じてこのストアド プロシージャを実行できるようになります。
3. ストアド プロシージャを呼び出す
次の PHP コードは、作成したばかりの insert_user ストアド プロシージャを呼び出し、新しいユーザー レコードを挿入します:
$db = new mysqli('localhost', 'root', '', 'test'); if ($db->connect_error) { die('连接数据库失败: ' . $db->connect_error); } // 调用存储过程 $name = 'Tom'; $email = 'tom@example.com'; $password = '123456'; $sql = "CALL `insert_user`('$name', '$email', '$password')"; $db->query($sql); echo "用户已添加";
この例では、まず、 MySQL データベースに接続するための mysqli オブジェクトを作成しました。次に、3 つの変数「Tom」、「tom@example.com」、「123456」をパラメーターとして使用して、ユーザー レコードを挿入するストアド プロシージャを呼び出します。最後に、成功メッセージを出力します。
上記の例では、単純なストアド プロシージャを作成して呼び出しました。もちろん、ストアド プロシージャを使用して、データ変換、データ クリーニング、データ集計、レポート生成など、より複雑なタスクを実行することもできます。
実際のアプリケーションでは、ストアド プロシージャによってデータベースのパフォーマンスが大幅に向上します。反復的な操作を実行する場合、または複雑な SQL ステートメントを処理する必要がある場合、ストアド プロシージャを使用するとコードがより簡潔になり、このロジックをデータベースにカプセル化することでシステムのパフォーマンスと保守性が向上します。
ストアド プロシージャを作成するときは、セキュリティと保守性に注意を払う必要があります。ストアド プロシージャを作成するときは、SQL インジェクション攻撃を防止し、過剰なコード ロジックや不必要な計算の使用を避けるために、パラメーター化されたクエリの使用を検討する必要があります。
つまり、PHP 言語は Web アプリケーションで最も広く使用されている言語の 1 つとなり、大量のデータを処理するための重要なツールとなっています。ストアド プロシージャを使用すると、複雑な SQL コードをデータベースにカプセル化し、システムのパフォーマンスと保守性を向上させることができます。
以上がPHP でデータベース ストアド プロシージャを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。