フォームフィールドからColdFusionを使用してSQL Server MONEYフィールドに値を挿入しようとしています。金額が単価の場合、またはセントが12を超える場合は、インサートは正常に機能します。ColdFusion - フォームフィールドをSQL Serverに挿入する
しかし、発生したエラーに応じてセントの金額が12未満の場合、システムは金額を挿入前の日付形式に変換しているように見えます。そして、もちろん、私はMONEYフィールドに日付を挿入しようとしているので、間違っています。 (!)
CF_ERG_DECIMAL型のCFQUERYPARAMを使用しようとしましたが、動作しませんでした。どんな考えでも大変感謝しています。
はここでフォームのコードです:
<CFFORM ACTION="_execute_project_payment.cfm?action=Add" METHOD="post" NAME="FormX">
<CFOUTPUT>
<INPUT TYPE="hidden" NAME="projectID" VALUE="#projectID#">
<TR>
<TD CLASS="label" ALIGN="right" VALIGN="top">Payments:</TD>
<TD>
$<CFINPUT NAME="payment" TYPE="TEXT" VALIDATE="FLOAT" SIZE="15" REQUIRED="YES" MESSAGE="You must enter a payment amount."> Date:
<CFINPUT TYPE="text" name="payment_date" id="payment_date" SIZE="12" VALIDATE="DATE" REQUIRED="YES" MESSAGE="You must enter a payment date.">
<img src="cal_icon.gif" id="trigger_payment_date"
style="cursor: pointer; border: 0px;"
title="Date selector"
onmouseover="this.style.background=’red’;"
onmouseout="this.style.background=’’" />
<script type="text/javascript">
Calendar.setup({
inputField : "payment_date",
ifFormat : "%m/%d/%Y",
button : "trigger_payment_date",
align : "Tl",
singleClick : false
});
</script>
<INPUT TYPE="Submit" VALUE="Add">
<BR>
</TD>
</TR>
</CFOUTPUT>
</CFFORM>
そして、ここで挿入です:
<CFSET paydateODBC = CreateODBCDate(FORM.payment_date)>
<CFQUERY NAME="add_project_payment" DATASOURCE="#dsource#" USERNAME="#usern#" PASSWORD="#passw#">
INSERT INTO project_payments (
projectID,
payment,
payment_date
)
VALUES (
#projectID#,
#FORM.Payment#,
#paydateODBC#
)
</CFQUERY>
そして、ここでのお支払いと666.10を入力しようとすると、エラーになります。個人的に
[Macromedia][SQLServer JDBC Driver][SQLServer]Conversion failed when converting datetime from character string.
The error occurred in C:\Websites\qrpqiy\toubltracker\_execute_project_payment.cfm: line 21
19 : #projectID#,
20 : #FORM.payment#,
21 : #paydateODBC#
22 : )
23 : </CFQUERY>
SQLSTATE 22007
SQL INSERT INTO project_payments (projectID, payment, payment_date) VALUES (433, {d '0666-10-01'}, {d '2009-05-15'})
VENDORERRORCODE 241
私はあなたの問題が解決されるが、私はあなたがSQLインジェクション攻撃に自分自身を開放している他のすべてのクエリの入力とパラメータまたはのためでcfqueryparamを提案したいと思います参照してください。 – Jayson