ホームページ  >  記事  >  データベース  >  PHP で MySQL ストアド プロシージャを使用する方法について話しましょう

PHP で MySQL ストアド プロシージャを使用する方法について話しましょう

PHPz
PHPzオリジナル
2023-04-17 15:29:26571ブラウズ

ここでは、PHP と MySQL のストアド プロシージャを紹介します。

ストアド プロシージャは、SQL ステートメントと制御ステートメントで構成される再利用可能な SQL プログラムを指します。ストアド プロシージャを使用すると、大規模で複雑なクエリが簡素化され、使用と保守が容易になり、大規模なアプリケーションのパフォーマンスも向上します。 PHP と MySQL はどちらもストアド プロシージャをサポートしており、アプリケーションの一部として実行したり、開発や研究のサンプルとして使用したりできます。

ストアド プロシージャを使用するために、PHP と MySQL の両方が対応する関数と構文を提供します。以下では、PHP で MySQL ストアド プロシージャを使用する方法の基本的な構文を紹介します。

MySQL ストアド プロシージャを作成するための基本的な構文は次のとおりです。

CREATE PROCEDURE procedure_name
([IN/OUT] parameter_name data type [(size)]) 
BEGIN
--  SQL Statements
END;

このうち、「procedure_name」はストアド プロシージャの名前、「parameter_name」はオプションのパラメータ名です。 IN、OUT、または INOUT タイプを指定できます。「データ タイプ」はパラメータのデータ タイプ、「サイズ」はパラメータのサイズです。たとえば、「getcustomerinfo」という名前のストアド プロシージャを作成できます。

CREATE PROCEDURE getcustomerinfo (IN id INT)
BEGIN
SELECT * FROM customers WHERE customer_id = id;
END;

PHP でストアド プロシージャを使用するための基本的な構文は次のとおりです。

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

// 调用存储过程
if ($stmt = $mysqli->prepare("CALL getcustomerinfo(?)")) {
    // 绑定参数
    $stmt->bind_param("i", $id);

    // 执行存储过程
    $stmt->execute();

    // 获取结果集
    $result = $stmt->get_result();

    // 处理结果集
    while ($row = $result->fetch_assoc()) {
        echo $row["customer_id"] . " " . $row["customer_name"] . "<br>";
    }

    // 释放结果集
    $result->free();

    // 关闭语句
    $stmt->close();
}

上の例では、最初にストアド プロシージャの場合、SQL ステートメントは「CALL getcustomerinfo(?)」です。次に、bind_param 関数を使用してパラメータをバインドします。この関数は 2 つのパラメータを受け入れます。1 つ目はパラメータ タイプの文字列で、2 つ目はパラメータ値です。この例では、整数値 $id をバインドしています。次に、ストアド プロシージャを実行し、fetch_assoc 関数を使用して結果セットから各行のデータを取得し、結果セットを取得します。最後に、結果セットを解放し、ステートメントを閉じます。

ストアド プロシージャを使用する場合は、次の点にも注意する必要があります。

  1. ストアド プロシージャはデータベース内に作成する必要があります。つまり、CREATE PROCEDURE ステートメントを使用して作成する必要があります。
  2. ストアド プロシージャを呼び出す場合は、prepare 関数とexecute 関数を使用することも、query 関数を使用してストアド プロシージャを直接実行することもできます。クエリ関数を使用する場合は、ストアド プロシージャ名の前にキーワード CALL を使用する必要があることに注意してください。
  3. ストアド プロシージャを呼び出すときは、すべての入力パラメータをバインドする必要があります。bind_param 関数を使用してバインドできます。
  4. ストアド プロシージャによって返される結果は、結果セット、影響を受ける行の数などです。結果セットを取得するときは、get_result 関数を使用する必要があります。
  5. ストアド プロシージャの実行は、BEGIN ステートメントと END ステートメントで囲むことができます。 BEGIN と END の間のステートメントはストアド プロシージャの本体として実行されます。

要約すると、ストアド プロシージャは、アプリケーションをより効率的にし、保守を容易にする SQL プログラムです。PHP と MySQL はどちらもストアド プロシージャの使用をサポートしています。構文とストアド プロシージャの使用に習熟していれば、アプリケーションの開発とメンテナンスに役立ちます。

以上がPHP で MySQL ストアド プロシージャを使用する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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