ホームページ > データベース > mysql チュートリアル > mysql prepare は何に役立ちますか?

mysql prepare は何に役立ちますか?

青灯夜游
リリース: 2023-04-18 11:52:51
オリジナル
1808 人が閲覧しました

MySQL では、PREPARE ステートメントはクライアント/サーバー バイナリ プロトコルを利用して、プレースホルダー「?」を含むクエリを MySQL サーバーに渡すことができます。PREPARE ステートメントを使用してプレースホルダーを含むクエリを実行すると、クエリの速度が向上し、ユーザーのクエリをより安全に。

mysql prepare は何に役立ちますか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

MySQL プリペアド ステートメントの概要

MySQL バージョン 4.1 より前では、クエリはテキスト形式で MySQL サーバーに送信されていました。その後、MySQL サーバーはテキスト プロトコルを使用してデータをクライアントに返します。 MySQL はクエリを完全に解析し、結果セットをクライアントに返す前に文字列に変換する必要があります。

テキスト プロトコルには重大なパフォーマンスの問題があります。この問題を解決するために、MySQL はバージョン 4.1 以降、prepare というステートメントを追加して、いくつかの新機能を実装しました。

prepare ステートメントは、クライアント/サーバー バイナリ プロトコルを利用します。次の例に示すように、プレースホルダー (?) を含むクエリを MySQL サーバーに渡します。

SELECT * 
FROM products 
WHERE productCode = ?;
ログイン後にコピー

MySQL がこのクエリを別の productcode 値で実行すると、クエリを完全に解析する必要はありません。したがって、これにより、特に MySQL がクエリを複数回実行する場合に、MySQL がクエリをより高速に実行できるようになります。 prepare ステートメントではプレースホルダー (?) が使用されるため、これにより SQL インジェクションの問題が回避され、アプリケーションの安全性が少し高まります。

MySQL プリペアド ステートメントの使用法

MySQL プリペアド ステートメントを使用するには、次のように他の 3 つの MySQL ステートメントを使用する必要があります。

PREPARE
    - 実行されるステートメント。
  • EXECUTE
  • -
  • PREPARE ステートメントで定義されたステートメントを実行します。 DEALLOCATE PREPARE
  • -
  • PREPARE ステートメントを発行します。 次の図は、
  • PREPARE
ステートメントの使用方法を示しています:

mysql prepare は何に役立ちますか?MySQL PREPARE ステートメントの例

MySQL PREPARE ステートメントの使用例を見てみましょう。
PREPARE stmt1 FROM 'SELECT productCode, productName
                    FROM products
                    WHERE productCode = ?';

SET @pc = 'S10_1678';
EXECUTE stmt1 USING @pc;

DEALLOCATE PREPARE stmt1;
ログイン後にコピー

まず、

PREPARE

ステートメントを使用して実行ステートメントを準備します。

SELECT ステートメントを使用して、指定された製品コードに基づいて products テーブルから製品データをクエリします。次に、製品コードのプレースホルダーとして疑問符 (?) を使用します。 次に、製品コード変数 @pc

が宣言され、その値が

S10_1678 に設定されます。 次に、EXECUTE

ステートメントを使用して、製品コード変数

@pc に対して準備されたステートメントを実行します。 最後に、DEALLOCATE PREPARE

を使用して

PREPARE ステートメントを発行します。 [関連する推奨事項: mysql ビデオ チュートリアル

]

以上がmysql prepare は何に役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート