Web アプリケーションを開発する場合、多くの場合、ストアド プロシージャを呼び出して複雑なデータベース操作を実行する必要があります。 ThinkPHP5 は、人気のある PHP フレームワークとして、データベース操作のための便利で高速なソリューションを提供します。この記事では、ThinkPHP5 でストアド プロシージャを呼び出す方法を紹介します。
まず、データベースにストアド プロシージャを作成する必要があります。 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) を受け入れます。結果 。
次に、対応するモデルでストアド プロシージャを呼び出す必要があります。既存のモデルの場合は、対応するメソッドに次のコードを追加できます。
$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
関数は文字列を整数に変換するために使用されます。
新しいモデルの場合は、以下の手順に従います。
UserModel
など) を作成し、次のコードを追加します。 ログイン後にコピー
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' => '登录失败']); } }
Db::query メソッドを使用する場合は、パラメーターの受け渡し方法と出力パラメーターの取得方法に注意する必要があります。ストアド プロシージャを合理的に使用することで、開発プロセス中に複雑なデータベース操作をより便利に実行できます。
以上がthinkphp5 はストアド プロシージャを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。