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 属性を指定します。 このタグでは次のことが実行されます。 SQL バインドパラメータを使用可能にします。これによりパフォーマンスが向上します。 指定された SQL タイプと変数データが一致していることを確認します。 SQL ステートメントからの長いテキストフィールドの更新を可能にします。 文字列変数を一重引用符でエスケープします。 バインド変数によるパフォーマンスの向上を活かすには、すべての ColdFusion 変数に cfqueryparam を使用する必要があります。また、DBMS がバインド変数をサポートしている必要があります。DBMS がバインドパラメータをサポートしていない場合は、ColdFusion で検証が行われ、検証済みのパラメータ値が文字列に置き換えられます。検証に失敗すると、エラーメッセージが返されます。 検証ルールは次のとおりです。 次のタイプについては、データ値を数値に変換することができます。 CF_SQL_SMALLINT、CF_SQL_INTEGER、CF_SQL_REAL、CF_SQL_FLOAT、CF_SQL_DOUBLE、CF_SQL_TINYINT、CF_SQL_MONEY、CF_SQL_MONEY4、CF_SQL_DECIMAL、CF_SQL_NUMERIC、および CF_SQL_BIGINT 次のタイプについては、データ値をターゲットデータソースでサポートされる日付に変換できます。CF_SQL_DATE、CF_SQL_TIME、CF_SQL_TIMESTAMP その他のタイプでは、maxLength 属性が使用される場合、データ値は指定されている最大長を越えることはできません。 ColdFusion のデバッグ出力では、バインド変数が疑問符 (?) で表示され、クエリーの下に値が使用順に表示されます。
メモ: | SequelLink ODBC Socket または SequelLink Access ドライバを使用して Microsoft Access テーブルに空の文字列を挿入するには、CFSQLType 属性で CF_SQL_LONGVARCHAR を指定する必要があります。
次の表は、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 identifier

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 money

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 identifier

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 time

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 タイプです。 CF_SQL_BIGINT CF_SQL_BIT CF_SQL_CHAR CF_SQL_BLOB CF_SQL_CLOB CF_SQL_DATE CF_SQL_DECIMAL CF_SQL_DOUBLE CF_SQL_FLOAT CF_SQL_IDSTAMP CF_SQL_INTEGER CF_SQL_LONGVARCHAR CF_SQL_MONEY CF_SQL_MONEY4 CF_SQL_NUMERIC CF_SQL_REAL CF_SQL_REFCURSOR CF_SQL_SMALLINT CF_SQL_TIME CF_SQL_TIMESTAMP CF_SQL_TINYINT CF_SQL_VARCHAR

MAXLENGTH |
| オプション
Default value: "value 属性値の文字列の長さ" パラメータの最大の長さです。文字列が DBMS に送信される前に ColdFusion で長さチェックを実行するようにする必要があります。その結果、悪意のある文字列の送信を回避できます。

SCALE |
| オプション
Default value: "0" パラメータの小数点以下の桁数です。CF_SQL_NUMERIC および CF_SQL_DECIMAL に適用されます。

NULL |
| オプション
Default value: "No" パラメータを null 値として渡すかどうかを指定します。 Yes: value 属性を無視します。 No

LIST |
| オプション
Default value: "No" Yes: value 属性値は区切りリストです。 No

SEPARATOR |
| value 属性でリストを指定する場合は必須
Default value: ", (カンマ)" value 属性内で、リストの値を区切る文字です。