PreserveSingleQuotes

説明

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

戻り値

(なし)

カテゴリ

その他の関数

関数のシンタックス

PreserveSingleQuotes(variable)

履歴

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

パラメータ

パラメータ

説明

variable

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

使用方法

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

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

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

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

PreserveSingleQuotes(#mystring#) is '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)#)"> **tharwood 11/16 

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

'1', '2', '3' 

<h3>PreserveSingleQuotes Example</h3><p>This is a useful function for 
    creating lists of information to return from a query. In this example,  
    we pick the list of Centers in Suisun, San Francisco, and San Diego,  
    using the SQL grammar IN to modify a WHERE clause, rather than looping  
    through the result set after the query is run. 
<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>We found <cfoutput>#GetCenters.RecordCount#</cfoutput> records. 
<cfoutput query = "GetCenters"> 
<p>#Name#<br>     
#Address1#<br> 
<cfif Address2 is not "">#Address2# 
    </cfif> 
#City#<br> 
#Phone#<br> 
</cfoutput>