我正在尝试使用输入值更新我的数据库,数据通过JSON传递给更新的coldfusion文件:customValue:"6436534653465346347734653465346"
。插入/更新查询应该使用此值,只需使用<cfqueryparam>
标记将其插入数据库:<cfqueryparam value="#VARNETJSONInput.customValue#" cfsqltype="cf_sql_varchar">
。
但由于某种原因,我无法理解它被插入我的MySQL数据库6.43653465347E+030
。我已经尝试在值中使用tostring()来强制插入为字符串,但它仍然会将其转换为科学记数法。我必须使用cf_sql_varchar
因为这个输入可以同时使用数字和字母。
数据库列的类型为:varchar (utf8 utf8_general_ci, length: 255)
有没有办法强制插入或使用coldfusion标签将公式转换为长数?
<cfif getcurrentother.RecordCount GT 0>
<cfquery name="updateCustom" datasource="#OLMSdatasourceWrite#" result="res_updateCustom">
UPDATE OLMS_Data_LRSS_CustomSelect
SET OLMS_LRSS_CustomFieldSelect_Content = #VARNETJSONInput.customValue#
WHERE OLMS_LRequestSubSet_ID = <cfqueryparam value="#VARNETJSONInput.LRSS#" cfsqltype="cf_sql_numeric"> AND
OLMS_AccountCustomField_ID = <cfqueryparam value="#VARNETJSONInput.customId#" cfsqltype="cf_sql_numeric">
</cfquery>
<cfelse>
<cfquery name="insertCustom" datasource="#OLMSdatasourceWrite#" result="res_updateCustom">
INSERT INTO OLMS_Data_LRSS_CustomSelect(OLMS_AccountCustomField_ID, OLMS_LRequestSubSet_ID, OLMS_LRSS_CustomFieldSelect_Content)
VALUES
(
<cfqueryparam value="#VARNETJSONInput.customId#" cfsqltype="cf_sql_numeric">
,<cfqueryparam value="#VARNETJSONInput.LRSS#" cfsqltype="cf_sql_numeric">
,#VARNETJSONInput.customValue#
);
</cfquery>
</cfif>
答案 0 :(得分:1)
由于您将数字存储为字符串,因此您始终可以发送字符串。
<cfqueryparam
value="#numberFormat(VARNETJSONInput.customValue, '9999999999999999999999999999')#"
cfsqltype="cf_sql_varchar">
确保你有足够的9s。
答案 1 :(得分:0)
这是一个已知的coldfusion问题,他们已经意识到了这一点: