ホームページ >バックエンド開発 >PHPチュートリアル >PDO のストアド プロシージャの詳細な紹介

PDO のストアド プロシージャの詳細な紹介

黄舟
黄舟オリジナル
2017-04-28 17:47:493123ブラウズ

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[&#39;nc&#39;];
    $password = md5($_POST[&#39;password&#39;]);
    $email = $_POST[&#39;email&#39;];
    $query = "call pro_reg(&#39;$nc&#39;,&#39;$password&#39;,&#39;$email&#39;)";
    $res = $pdo->prepare($query);//准备查询语句
    if ($res->execute()) {
        echo "添加数据库成功";
    } else {
        echo "添加数据库失败";
    }
}catch (PDOException $e){
    echo "PDO Exception Caught";
    echo &#39;Error with the database:<br>&#39;;
    echo &#39;SQL Query;&#39;.$query;
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    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 の概要、特徴、インストールから始まり、次のような PDO のアプリケーション例まで説明します。この章の学習を通じて、さまざまなデータベースに接続する方法、SQL ステートメントを実行する方法、結果セットを取得してエラー処理を実行する方法、そして PDO の高度なアプリケーションであるトランザクションとストアド プロシージャについて説明します。各部分には対応する例があります。 Xiao Partners は PDO テクノロジーのアプリケーションを習得できると信じています。それでは、次のトピックでお会いしましょう!

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

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