Как обновлять данные во всех строках одновременно с помощью ColdFusion - PullRequest
0 голосов
/ 20 мая 2011

Я хочу спросить, как обновлять данные во всех строках одновременно.Это мой SQL:

<cfloop index="#form.ppp_id#">
    <cfquery name="viewPoint" datasource="#application.DataSource#">
        update PCRS_PHOTOPOINT set PPP_POINT_FROM = #form.point_from#, 
        PPP_POINT_UNTIL = #form.point_until#,
        PPP_UPDATE_DATE = SYSDATE, PPP_ICONS_NAME = '#form.icons_name#' 
        where PPP_ID = #form.ppp_id#
    </cfquery>
</cfloop>

Я получил эту ошибку:

Ошибка проверки атрибута для тега 'CFLOOP'

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Нет необходимости использовать цикл вообще. Вы можете использовать оператор SQL in вместо =, чтобы обновлять список значений сразу, вместо выполнения оператора SQL в цикле. Кроме того, как уже упоминал кто-то другой, вам лучше использовать cfqueryparam вместо передачи пользовательских строк прямо в БД.

<cfquery name="viewPoint" datasource="#application.DataSource#">
  update PCRS_PHOTOPOINT set
    PPP_POINT_FROM = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.point_from#">,
    PPP_POINT_UNTIL = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.point_until#">,
    PPP_UPDATE_DATE = SYSDATE,
    PPP_ICONS_NAME = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.icons_name#">
  where PPP_ID in (<cfqueryparam list="yes" cfsqltype="cf_sql_integer" value="#form.ppp_id#">)
</cfquery>
0 голосов
/ 20 мая 2011

Вы должны делать это так:

<cfloop list="#form.ppp_id#" index="iItems">
    <cfquery name="viewPoint" datasource="#application.DataSource#">
        update PCRS_PHOTOPOINT set PPP_POINT_FROM = "#form.point_from#", 
        PPP_POINT_UNTIL = "#form.point_until#",
        PPP_UPDATE_DATE = SYSDATE, PPP_ICONS_NAME = "#form.icons_name#" 
        where PPP_ID = #iItems#
    </cfquery>
</cfloop>

Дайте мне знать, как это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...