PDO のストアド プロシージャの詳細な紹介
PDO のストアド プロシージャを使用すると、データをデータの近くで操作できるため、データをスクリプト ロジックから独立させ、複数の言語を使用できるようになります。各システムは同じ方法でデータにアクセスするため、事前定義されたスキームを使用して操作を実行し、クエリを高速化し、データとの直接のやり取りを防止することでデータを保護します。
前回の記事「PDOのトランザクション処理詳しく紹介」ではPDOのトランザクション処理について紹介しましたので、今回はPDOのストアドプロシージャについて紹介していきます!
まず、PDO でストアド プロシージャを呼び出す方法を説明します。ここでは、まず次の SQL ステートメントを使用してストアド プロシージャを作成します。
drop procedure if exists pro_reg; delimiter// create procedure pro_reg(in nc varchar(80),in pwd varchar(80), in email varchar(80),in address varchar(50)) begin insert into tb_reg(name,pwd,email,address)values(nc,pwd,email,address); end; //
「drop」ステートメントは、MySQL サーバー内の既存のストアド プロシージャ pro_reg を削除します。
「delimiter//」の機能は、文の末尾を「//」に変えることです。
「in nc varchar(80)....in address varchar(50)」は、ストアド プロシージャに渡されるパラメータを示します。
「begin...end」はストアドプロシージャ内のステートメントブロックを表し、その機能はPHP言語の「{....}」に似ています。
ストアドプロシージャが正常に作成されたら、以下のようにストアドプロシージャを呼び出してユーザー登録情報を追加します。具体的な手順は次のとおりです。
index.phpファイルを作成します。まず、フォームを作成し、POST メソッドを通じてこのページにユーザー情報を送信します。次に、このページに PHP スクリプトを記述し、PDO 経由で MySQL データベースに接続し、データベースのエンコード形式を UTF-8 に設定して、フォームに送信されたユーザー登録情報を取得します。次に、call ステートメントを通じてストアド プロシージャ pro_reg を呼び出し、ユーザー登録情報をデータ テーブルに追加します。最後に、try...catch... ステートメント ブロックを通じてエラー情報が返されます。キーコードは次のとおりです:
<form name="form1" action="4.php" method="post"> 用户昵称:<input type="text" name="nc"><br> 密 码:<input type="password" name="password"><br> 邮 箱:<input type="text" name="email"><br> <input type="submit" name="Submit" value="注册"> <input type="submit" name="Submit" value="重写"> </form> <?php if($_POST["Submit"]){ header("Content-Type:text/html; charset=utf-8"); //设置页面的编码格式 $dbms = "mysql"; // 数据库的类型 $dbName ="php_cn"; //使用的数据库名称 $user = "root"; //使用的数据库用户名 $pwd = "root"; //使用的数据库密码 $host = "localhost"; //使用的主机名称 $dsn = "$dbms:host=$host;dbname=$dbName"; try { $pdo = new PDO($dsn, $user, $pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $nc = $_POST['nc']; $password = md5($_POST['password']); $email = $_POST['email']; $query = "call pro_reg('$nc','$password','$email')"; $res = $pdo->prepare($query);//准备查询语句 if ($res->execute()) { echo "添加数据库成功"; } else { echo "添加数据库失败"; } }catch (PDOException $e){ echo "PDO Exception Caught"; echo 'Error with the database:<br>'; echo 'SQL Query;'.$query; echo '<pre class="brush:php;toolbar:false">'; echo "Error:".$e -> getMessage()."<br>"; echo "Code:".$e ->getCode()."<br>"; echo "File:".$e ->getFile()."<br>"; echo "Line:".$e ->getLine()."<br>"; echo "Trace:".$e ->getTraceAsString()."<br>"; echo ""; } }
結果は次のとおりです:
主なことは、ストアド プロシージャを作成し、このストアド プロシージャを呼び出すことです。友達はローカルでそれを試すことができます。 ~
概要:
これは、データベース抽象化レイヤーである PDO に焦点を当てており、PDO の概要、特徴、インストールから始まり、次のような PDO のアプリケーション例まで説明します。この章の学習を通じて、さまざまなデータベースに接続する方法、SQL ステートメントを実行する方法、結果セットを取得してエラー処理を実行する方法、そして PDO の高度なアプリケーションであるトランザクションとストアド プロシージャについて説明します。各部分には対応する例があります。 Xiao Partners は PDO テクノロジーのアプリケーションを習得できると信じています。それでは、次のトピックでお会いしましょう!
以上がPDO のストアド プロシージャの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。