| CFQUERYPARAM | |||
| 説明
クエリーパラメータのデータタイプを検証します。バインド変数をサポートする DBMS では、SQL ステートメントでバインド変数を使用できるようにします。バインド変数を使用することで、cfquery ステートメントを何度も実行するときのパフォーマンスが向上します。 このタグは、クエリー SQL ステートメント内に埋め込まれた cfquery タグ内にネストされます。オプションのパラメータを指定すると、このタグはデータ検証を実行します。 各 cfquery タグ内で cfqueryparam タグを使用して、未認可のユーザーからデータベースを保護するようにしてください。詳細については、セキュリティ情報 ASB99-04「Multiple SQL Statements in Dynamic Queries」(www.macromedia.com/devnet/security/security_zone/asb99-04.html) および 『ColdFusion MX 開発ガイド』の第20章の「データへのアクセスおよび取り出し」 を参照してください。 |
|||
| カテゴリ
データベース操作タグ | |||
シンタックス<cfquery
name = "query_name"
dataSource = "ds_name"
...他の属性...
SQL STATEMENT column_name =
<cfqueryparam value = "parameter value"
CFSQLType = "parameter type"
maxLength = "maximum parameter length"
scale = "number of decimal places"
null = "yes"、"no"
list = "yes"、"no"
separator = "separator character">
AND/OR ...WHERE 節の補足条件...
</cfquery>
|
|||
| 関連項目
cfinsert、cfprocparam、cfprocresult、cfquery、cfstoredproc、cftransaction、cfupdate、『ColdFusion MX 開発ガイド』の第20章の「データへのアクセスおよび取り出し」 の「cfqueryparam によるセキュリティの強化」
|
|||
| 使用方法
cfqueryparam タグは、ColdFusion 変数を使用する任意の SQL ステートメント (SELECT、INSERT、UPDATE、DELETE など) で使用します。 cfquery、cachedAfter、または cachedWithin の各属性は、cfqueryparam と共に使用できません。 文字列データの検証の最大値を決定するために、maxlength 属性を指定します。 このタグでは次のことが実行されます。
バインド変数によるパフォーマンスの向上を活かすには、すべての ColdFusion 変数に cfqueryparam を使用する必要があります。また、DBMS がバインド変数をサポートしている必要があります。DBMS がバインドパラメータをサポートしていない場合は、ColdFusion で検証が行われ、検証済みのパラメータ値が文字列に置き換えられます。検証に失敗すると、エラーメッセージが返されます。 検証ルールは次のとおりです。
ColdFusion のデバッグ出力では、バインド変数が疑問符 (?) で表示され、クエリーの下に値が使用順に表示されます。
次の表は、JDBC SQL タイプを使用する ColdFusion SQL データタイプのマッピング、および各データベース管理システムのデータタイプを示しています。
|
|||
例<!--- この例では、Course_ID に有効な入力が与えられた場合の cfqueryparam を示します。 --->
<h3>cfqueryparam の例</h3>
<cfset Course_ID = 12>
<cfquery name = "getFirst" dataSource = "cfdocexamples">
SELECT *
FROM courses
WHERE Course_ID = <cfqueryPARAM value = "#Course_ID#"
CFSQLType = "CF_SQL_INTEGER">
</cfquery>
<cfoutput query = "getFirst">
<p>コース番号 : #Course_ID#<br> 説明 : #descript#</p>
</cfoutput>
<!--- この例では、Course_ID に無効な文字列データがある場合の
CFQUERYPARAM の使い方を示します。 ---->
<p>この例では、CFQUERYPARAM タグに渡される値が
MAXLENGTH 属性の値を越えるので、エラーが発生します。</p>
<cfset LastName="Peterson; DELETE employees WHERE LastName='Peterson'">
<!------- 文字列を入力する場合は、検証のために MAXLENGTH 属性を
指定しなければならないことに注意してください。 -------------------------------------------------->
<cfquery
name="getFirst" datasource="cfdocexamples">
SELECT *
FROM employees
WHERE LastName=<cfqueryparam
value="#LastName#"
cfsqltype="CF_SQL_VARCHAR"
maxlength="17">
</cfquery>
<cfoutput
query="getFirst"> <p>
コース番号 : #FirstName# #LastName#
説明 : #Department# </p>
</cfoutput>
|
|||
| CF_SQL_ARRAY | |
| ARRAY | |
|
|
|
| CF_SQL_BIGINT | |
| BIGINT | |
|
Default value: "Bigint"
int8、serial8
|
|
| CF_SQL_BINARY | |
| BINARY | |
|
Default value: "Char for Bit Data"
binary timestamp |
|
| CF_SQL_BIT | |
| BIT | |
|
boolean
bit |
|
| CF_SQL_BLOB | |
| BLOB | |
|
Default value: "Blob"
blob blob、bfile
|
|
| CF_SQL_CHAR | |
| CHAR | |
|
Default value: "Char"
char、 nchar char、 nchar char、nchar、 unique |
|
| CF_SQL_CLOB | |
| CLOB | |
|
Default value: "Clob"
clob clob、nclob
|
|
| CF_SQL_DATE | |
| DATE | |
|
Default value: "Date"
date、datetime、year to day
|
|
| CF_SQL_DECIMAL | |
| DECIMAL | |
|
Default value: "Decimal"
decimal、money number decimal、money、small |
|
| CF_SQL_DISTINCT | |
| DISTINCT | |
|
|
|
| CF_SQL_DOUBLE | |
| DOUBLE | |
|
Default value: "Double"
|
|
| CF_SQL_FLOAT | |
| FLOAT | |
|
Default value: "Float"
float number float |
|
| CF_SQL_IDSTAMP | |
| CHAR | |
|
Default value: "Char"
char、nchar char、nchar char、nchar、unique |
|
| CF_SQL_INTEGER | |
| INTEGER | |
|
Default value: "Integer"
integer、serial
int |
|
| CF_SQL_LONGVARBINARY | |
| LONGVARBINARY | |
|
Default value: "Long Varchar for Bit Data"
byte long raw image |
|
| CF_SQL_LONGVARCHAR | |
| LONGVARCHAR | |
|
Default value: "Long Varchar"
text long text、ntext |
|
| CF_SQL_MONEY | |
| DOUBLE | |
|
Default value: "Double"
|
|
| CF_SQL_MONEY4 | |
| DOUBLE | |
|
Default value: "Double"
|
|
| CF_SQL_NULL | |
| NULL | |
|
|
|
| CF_SQL_NUMERIC | |
| NUMERIC | |
|
Default value: "Numeric"
numeric |
|
| CF_SQL_OTHER | |
| OTHER | |
|
|
|
| CF_SQL_REAL | |
| REAL | |
|
Default value: "Real"
smallfloat
real |
|
| CF_SQL_REFCURSOR | |
| REF | |
|
|
|
| CF_SQL_SMALLINT | |
| SMALLINT | |
|
Default value: "Smallint"
smallint
smallint |
|
| CF_SQL_STRUCT | |
| STRUCT | |
|
|
|
| CF_SQL_TIME | |
| TIME | |
|
Default value: "Time"
datetime hour to second
|
|
| CF_SQL_TIMESTAMP | |
| TIMESTAMP | |
|
Default value: "Timestamp"
datetime year to fraction(5)、datetime year to second date datetime、smalldate |
|
| CF_SQL_TINYINT | |
| TINYINT | |
|
tinyint |
|
| CF_SQL_VARBINARY | |
| VARBINARY | |
|
Default value: "Rowid"
raw varbinary |
|
| CF_SQL_VARCHAR | |
| VARCHAR | |
|
Default value: "Varchar"
varchar、nvarchar、lvarchar varchar2、nvarchar2 varchar、nvarchar、sysname |
|
| VALUE | |
| 必須 | |
|
ColdFusion によって where 句の比較演算子の右側に渡される値です。 CFSQLType が日付または時刻のオプションの場合は、日付の値に必ず使用中の DBMS 固有の日付形式を使用します。CreateODBCDateTime または DateFormat および TimeFormat 関数を使用して、日付の値の形式を設定します。 |
|
| CFSQLTYPE | |
| オプション | |
|
Default value: "CF_SQL_CHAR"
任意のタイプのパラメータが結合される SQL タイプです。
|
|
| MAXLENGTH | |
| オプション | |
|
Default value: "value 属性値の文字列の長さ"
パラメータの最大の長さです。文字列が DBMS に送信される前に ColdFusion で長さチェックを実行するようにする必要があります。その結果、悪意のある文字列の送信を回避できます。 |
|
| SCALE | |
| オプション | |
|
Default value: "0"
パラメータの小数点以下の桁数です。CF_SQL_NUMERIC および CF_SQL_DECIMAL に適用されます。 |
|
| NULL | |
| オプション | |
|
Default value: "No"
パラメータを null 値として渡すかどうかを指定します。
|
|
| LIST | |
| オプション | |
Default value: "No"
|
|
| SEPARATOR | |
| value 属性でリストを指定する場合は必須 | |
|
Default value: ", (カンマ)"
value 属性内で、リストの値を区切る文字です。 |
|