ホームページ >PHPフレームワーク >ThinkPHP >thinkphp5 はストアド プロシージャを呼び出します

thinkphp5 はストアド プロシージャを呼び出します

WBOY
WBOYオリジナル
2023-05-26 16:24:07908ブラウズ

Web アプリケーションを開発する場合、多くの場合、ストアド プロシージャを呼び出して複雑なデータベース操作を実行する必要があります。 ThinkPHP5 は、人気のある PHP フレームワークとして、データベース操作のための便利で高速なソリューションを提供します。この記事では、ThinkPHP5 でストアド プロシージャを呼び出す方法を紹介します。

  1. ストアド プロシージャの作成

まず、データベースにストアド プロシージャを作成する必要があります。 MySQL を例として、次のストアド プロシージャを作成したとします。

DELIMITER $$
CREATE PROCEDURE user_login(IN `username` varchar(50), IN `password` varchar(50), OUT `result` varchar(20))
BEGIN
    SELECT COUNT(*) INTO result FROM user WHERE `username`=username AND `password`=password;
END $$
DELIMITER ;

このストアド プロシージャは、ユーザーのログイン情報を確認するために使用され、2 つの入力パラメータ (ユーザー名とパスワード) と 1 つの出力パラメータ (login) を受け入れます。結果 。

  1. モデルでの呼び出し

次に、対応するモデルでストアド プロシージャを呼び出す必要があります。既存のモデルの場合は、対応するメソッドに次のコードを追加できます。

$result = Db::query("CALL user_login('".$username."','".$password."',@result);");

ここでは Db::query メソッドを使用してストアド プロシージャを実行します。最初のパラメータはストアド プロシージャの SQL ステートメントです。パラメータ値は二重引用符で囲まれていることに注意してください。 2 番目のパラメーターは、ストアド プロシージャの出力を取得するために使用される参照変数です。その前に、出力結果を保存する変数を定義する必要があります:

$result = '';

最後に、ストアド プロシージャを実行する前に次のコードを追加して、出力パラメーターが正しく取得できることを確認する必要があります:

Db::query("SELECT @result AS result;");

Complete コードは次のとおりです。

public function login($username, $password)
{
    $result = '';

    Db::query("SELECT @result := '';");

    $result = Db::query("CALL user_login('".$username."','".$password."',@result);");

    Db::query("SELECT @result AS result;");

    return intval($result[0]['result']) === 1;
}

このうち、intval 関数は文字列を整数に変換するために使用されます。

新しいモデルの場合は、以下の手順に従います。

  1. 新しいモデル クラス (UserModel など) を作成し、次のコードを追加します。
  2. ##
    コントローラーでモデル メソッドを呼び出します。例:
  1. public function login()
    {
        $username = input('post.username');
        $password = input('post.password');
    
        if(UserModel::login($username, $password)){
            return json(['code' => 0, 'message' => '登录成功']);
        } else {
            return json(['code' => -1, 'message' => '登录失败']);
        }
    }
    プログラムを実行します。すべてがうまくいけば、次のことができるはずです。ログインに成功しました。
  1. 概要
この記事の導入部を通じて、ThinkPHP5 でストアド プロシージャを呼び出す方法を学習しました。ストアド プロシージャを実行する前に、出力パラメータを設定し、実行後に結果をクエリする必要があることに注意してください。同時に、

Db::query メソッドを使用する場合は、パラメーターの受け渡し方法と出力パラメーターの取得方法に注意する必要があります。ストアド プロシージャを合理的に使用することで、開発プロセス中に複雑なデータベース操作をより便利に実行できます。

以上がthinkphp5 はストアド プロシージャを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。