レコードを追加するときに回答テーブルに挿入する質問 ID のリストがあります。
<!--- answers query --->
<cfquery name="answers">
SELECT answer, rank
FROM answers
WHERE question_id IN (<cfqueryparam cfsqltype="cf_sql_integer" list="true" separator="," value="#qid#">)
</cfquery>
これqid
は、回答を取得している古い質問IDのリストであり、同じ回答を新しい質問IDで複製しています。
<!--- list of questionids --->
<cfset questionid = ArrayToList(idArray)>
<cfquery name="insertanswers">
INSERT INTO answers (
question_id, answer, rank
)
VALUES
<cfloop query="answers">
(
<cfqueryparam cfsqltype="cf_sql_integer" list="true" separator="," value="#questionid#">
,<cfqueryparam cfsqltype="cf_sql_varchar" value="#answers.answer#">
,<cfqueryparam cfsqltype="cf_sql_numeric" value="#answers.rank#">
)
<cfif answers.CurrentRow LT answers.RecordCount>,</cfif>
</cfloop>
</cfquery>
レコードを追加しているcolumn count doesn't match value count
ときにエラーが発生しますが、コードをラップしcftry
てダンプすると、回答ごとにコンマ区切りの形式で 2 つの ID が取得されていることがわかりました。回答ごとに 1 つの ID のみを渡す方法はありますか? 古い質問IDを新しい質問IDに置き換えているだけです。