Spec-Zone.ru › ColdFusion

cfqueryparam

Проверяет тип данных параметра запроса и для СУБД, поддерживающих связываемые переменные, позволяет CFML использовать связываемые переменные в операторе SQL. Использование связываемых переменных повышает производительность при многократном выполнении оператора cfquery. Этот тег размещается внутри тега cfquery и встраивается в SQL-оператор запроса. Если указать необязательные параметры, этот тег выполняет проверку данных. ПРИМЕЧАНИЕ: В целях безопасности настоятельно рекомендуется использовать этот тег для любых пользовательских данных или динамических значений в запросе, чтобы предотвратить внедрение кода и подобные атаки.

<cfqueryparam>

cfqueryparam();

  • CF4.5+
  • Lucee
  • BL 1.0.0+
  • См. также: cfquery queryExecute

    Справочник по атрибутам

    value строка

    Значение, которое CFML передает справа от оператора сравнения в условии where. Если CFSQLType задан как тип даты или времени, убедитесь, что значение даты использует формат даты, специфичный для вашей СУБД. Для форматирования значения даты используйте функции CreateODBCDateTime или DateFormat и TimeFormat.

    cfsqltype строка
    По умолчанию: CF_SQL_CHAR

    Тип SQL, к которому привязывается параметр (любого типа). Начиная с CF 11+ или Lucee 4.5+ префикс cf_sql_ можно опустить. Сопоставление типов данных CFSQL с типами данных СУБД см. в [шпаргалке по CFSqlType](https://cfdocs.org/cfsqltype-cheatsheet).
    Значения:
    • cf_sql_bigint
    • cf_sql_bit
    • cf_sql_char
    • cf_sql_blob
    • cf_sql_clob
    • cf_sql_nclob
    • cf_sql_date
    • cf_sql_decimal
    • cf_sql_double
    • cf_sql_float
    • cf_sql_idstamp
    • cf_sql_integer
    • cf_sql_longvarchar
    • cf_sql_longnvarchar
    • cf_sql_money
    • cf_sql_money4
    • cf_sql_nchar
    • cf_sql_nvarchar
    • cf_sql_numeric
    • cf_sql_real
    • cf_sql_refcursor
    • cf_sql_smallint
    • cf_sql_sqlxml
    • cf_sql_time
    • cf_sql_timestamp
    • cf_sql_tinyint
    • cf_sql_varchar
    • bigint
    • bit
    • char
    • blob
    • clob
    • nclob
    • date
    • decimal
    • double
    • float
    • idstamp
    • integer
    • longvarchar
    • longnvarchar
    • money
    • money4
    • nchar
    • nvarchar
    • numeric
    • real
    • refcursor
    • smallint
    • sqlxml
    • time
    • timestamp
    • tinyint
    • varchar

    maxlength число

    Максимальная длина параметра.

    scale число
    По умолчанию: 0

    Количество знаков после запятой в параметре. Применяется к CF_SQL_NUMERIC и CF_SQL_DECIMAL.

    null логическое значение

    Передается ли параметр как значение NULL. Да: атрибут value игнорируется, передается NULL. Нет: передается атрибут value.

    list логическое значение

    Да: значение атрибута value представляет собой список элементов, разделенных разделителем. Нет: это не список.

    separator строка

    Символ, разделяющий значения списка в атрибуте value.

    Совместимость

    ColdFusion:

    Версия 4.5+ CF2018+ вызывает исключения для недопустимых значений cfsqltype, в предыдущих версиях недопустимые типы обрабатывались как varchar — см. CF-4198194.

    Lucee:

    Поддерживает int и cf_sql_int для целых чисел

    Railo:

    Поддерживает int и cf_sql_int для целых чисел

    BoxLang:

    Версия 1.0.0+ <bx:queryparam> в BoxLang

    Ссылки дополнительная информация о cfqueryparam

    • Осваиваем cfqueryparam — руководство по всем тонкостям использования cfqueryparam.

    Примеры
    Примеры кода с тегом cfqueryparam

    Простой пример

    Показывает, как использовать тег cfqueryparam внутри cfquery.

    <cfquery name="news">
        SELECT id,title,story
        FROM news
        WHERE id = <cfqueryparam value="#url.id#" cfsqltype="cf_sql_integer">
    </cfquery>

    Использование списка в операторе IN

    Предполагается, что url.idList — это разделенный запятыми список целых чисел, например: 1,2,3

    <cfquery name="news">
        SELECT id,title,story
        FROM news
        WHERE id IN (<cfqueryparam value="#url.idList#" cfsqltype="cf_sql_integer" list="true">)
    </cfquery>

    Использование выражений для управления значениями null

    Простой пример использования выражения для управления тем, передается ли значение null в queryparam

    <cfquery name="test">
          INSERT into test ( key, value )
          VALUES(
                <cfqueyparam value="#key#" cfsqltype="cf_sql_varchar" null="#isNumeric(Key) EQ false#">
                <cfqueryparam value="#value#" cfsqltype="cf_sql_varchar" null="#value EQ ''#">
          )
    </cfquery>

    Эквивалент cfqueryparam на cfscript

    CF 11+ Синтаксис скрипта с использованием queryExecute и записи в виде структуры

    exampleData = queryNew("id,title","integer,varchar",[{"id":1,"title":"Dewey defeats Truman"},{"id":2,"title":"Man walks on Moon"}]);
    
    result = queryExecute(
      "SELECT title FROM exampleData WHERE id = :id", 
      { id = 2 },
      { dbtype="query" }
    );
    
    writeOutput( result.title[1] );

    Ожидаемый результат: Человек ходит по Луне

    Эквивалент cfqueryparam на cfscript

    CF 11+ Синтаксис скрипта с использованием queryExecute и записи в виде структуры для нескольких параметров

    exampleData = queryNew("id,title","integer,varchar",[{"id":1,"title":"Dewey defeats Truman"},{"id":2,"title":"Man walks on Moon"}]);
    
    result = queryExecute(
     "SELECT * FROM exampleData WHERE id = :id AND title = :title", 
     { 
     title={value="Man walks on Moon", cfsqltype="cf_sql_varchar"}, id={value=2, cfsqltype="cf_sql_integer"} 
     },
     { dbtype="query" } 
    ); 
    
    writeOutput(result.title[1]);

    Ожидаемый результат: Человек ходит по Луне

    Эквивалент cfqueryparam на cfscript

    CF 11+ Синтаксис скрипта с использованием queryExecute и полной записи массива

    exampleData = queryNew("id,title","integer,varchar",[{"id":1,"title":"Dewey defeats Truman"},{"id":2,"title":"Man walks on Moon"}]);
    
    result = queryExecute(
      "SELECT title FROM exampleData WHERE id = ?", 
      [
        { value=2, cfsqltype="cf_sql_varchar" }
      ],
      { dbtype="query" }
    );
    
    writeOutput( result.title[1] );

    Ожидаемый результат: Человек ходит по Луне

    Эквивалент cfqueryparam на cfscript

    CF 11+ Синтаксис скрипта с использованием queryExecute и сокращенной записи массива

    exampleData = queryNew("id,title","integer,varchar",[{"id":1,"title":"Dewey defeats Truman"},{"id":2,"title":"Man walks on Moon"}]);
    
    result = queryExecute(
      "SELECT title FROM exampleData WHERE id = ?", 
      [ 2 ],
      { dbtype="query" }
    );
    
    writeOutput( result.title[1] );

    Ожидаемый результат: Человек ходит по Луне

    © 2012–present Foundeo, Inc. and the CFDocs contributors.
    Licensed under the MIT License.
    ColdFusion is a trademark of Adobe Systems Incorporated.
    https://cfdocs.org/cfqueryparam

    Spec-Zone.ru

    Настройки Оффлайн Что нового Помощь О нас
    Spec-Zone .ru
    спецификации, руководства, описания, API