ColdFusion MX
目 次 > CFML リファレンス > ColdFusion 関数 > PreserveSingleQuotes O

PreserveSingleQuotes

変数に含まれている単一引用符 (') が ColdFusion によって自動的にエスケープされるのを防ぎます。引数の評価は行われません。

(なし)

その他の関数

PreserveSingleQuotes(variable)

ColdFusion MX: 動作の変更 : cfquery タグ本文またはブロック内での単純変数、配列変数、および構造体変数の参照は ColdFusion によって自動的にエスケープされます。以前のリリースでは、配列変数の参照は自動的にエスケープされませんでした。

パラメータ

説明

variable

単一引用符をエスケープせず維持する必要がある文字列を含んでいる変数です。

SQL ステートメントでこの関数を使用すると、変数の参照の評価を実行時まで遅らせることができます。これにより、データ文字に含まれる単一引用符またはアポストロフィ (たとえば "Joe's Diner") が区切り文字として評価されるのを防ぎ、エラーを防止できます。

例 A:次のようなコードがあるとします。

<cfset mystring = "'Newton's Law', 'Fermat's Theorem'">
PreserveSingleQuotes(#mystring#) は
<cfoutput>
#PreserveSingleQuotes(mystring)# </cfoutput>

出力は次のようになります。

PreserveSingleQuotes(#mystring#) は 'Newton's Law', 'Fermat's Theorem' 

例 B:次のようなコードがあるとします。

<cfset list0 = " '1','2''3' ">
<cfquery sql = "select * from foo where bar in (#list0#)">

リスト内の単一引用符が ColdFusion によって次のようにエスケープされます。

""1"", ""2"", ""3""

このため、cfquery タグでエラーが発生します。

この例が正しく動作するようにするには、次のようにコーディングします。

<cfquery sql = "select * from foo where bar in (#preserveSingleQuotes(list0)#)"> 

この関数を使用することで、コードが次のように評価されます。

'1', '2', '3' 

<h3>PreserveSingleQuotes の例</h3><p>この関数は、クエリから返される情報の
   条件を指定するリストの作成に役立ちます。この例では、
   Suisun、San Francisco、および San Diego にあるセンターの一覧を取り出すために
   SQL 文の WHERE 節で IN を使用しています。こうすれば、クエリの実行後にループで
   結果セットから目的のセンターを探す必要はありません。
<cfset List = "'Suisun', 'San Francisco', 'San Diego'">
<cfquery name = "GetCenters" datasource = "cfsnippets">
   SELECT Name, Address1, Address2, City, Phone
   FROM Centers
   WHERE City IN (#PreserveSingleQuotes(List)#)
</cfquery>
<p><cfoutput>#GetCenters.RecordCount#</cfoutput> 件のレコードが見つかりました。
<cfoutput query = "GetCenters">
<p>#Name#<br>   
#Address1#<br>
<cfif Address2 is not "">#Address2#
</cfif> #City#<br> #Phone#<br> </cfoutput>

目 次 > CFML リファレンス > ColdFusion 関数 > PreserveSingleQuotes O

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/coldfusion/6.1_jp/htmldocs2/functa53.htm