PRESERVESINGLEQUOTES |
説明 変数に含まれている一重引用符 (') が ColdFusion によって自動的にエスケープされるのを防ぎます。引数の評価は行われません。
戻り値 (なし)
カテゴリ その他の関数
関数のシンタックス
    PreserveSingleQuotes(variable)
ヒストリ ColdFusion MX: 動作の変更 : cfquery タグ本文またはブロック内での単純変数、配列変数、および構造体変数の参照は ColdFusion によって自動的にエスケープされます。以前のリリースでは、配列変数の参照は自動的にエスケープされませんでした。
パラメータ
使用方法 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 = "cfdocexamples">
       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>

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