ご存知のとおり、MySQL ユーザー変数は、それを使用するクライアント接続に固有であり、その接続の間のみ存在します。接続が終了すると、そのユーザー変数はすべて失われます。同様に、準備されたステートメントは、それを作成したセッション中にのみ存在し、それを作成したセッションに表示されます。セッションが終了すると、そのセッションの準備されたステートメントはすべて破棄されます。
もう 1 つの類似点は、プリペアド ステートメントも MySQL ユーザー変数のように大文字と小文字が区別されないことです。たとえば、次の例に示すように、stmt11 と STMT11 は両方とも同じです。 -
mysql> Select * from student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Rohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Sohan', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE Stmt11 USING @A, @B; Query OK, 1 row affected (0.12 sec) mysql> Select * from Student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Sohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Gaurav', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE STMT11 USING @A, @B; Query OK, 1 row affected (0.04 sec) mysql> Select * from Student; +------+--------+ | Id | Name | +------+--------+ | 1 | Ram | | 2 | Shyam | | 3 | Gaurav | +------+--------+ 3 rows in set (0.00 sec)
上の例では、stmt11 を実行すると、次回 STMT11 を実行するときはすべて同じように動作します。これは、ステートメントが準備完了であるためです。大文字と小文字を区別しません。
以上が準備されたステートメントと MySQL ユーザー変数の類似点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。