Данные выбираются из одной таблицы и вставляются в другую таблицу. Эти данные являются ключевыми для первой таблицы, но являются внешним ключом ко второй таблице. Используя cfquery
, выберите и вставьте работы без каких-либо проблем. Но когда эти данные содержат более одного пространства, например, "XXX ZZZ"
(есть три пространства в середине), я получу ошибку внешнего ключа при вставке данных. Используя db2, ошибка равна -530.Как сохранить пробелы при выполнении вставки в cfquery?
Я создал запись с 2 пробелами, той же ошибкой. Создано одно пространство без ошибок. Это, похоже, доказывает, что при вставке cfquery ColdFusion сохраняет одно пространство и удаляет любые другие, если они существуют. Я даже пытаюсь использовать replace(data," "," ","all")
или chr(32)
, чтобы заменить пространство, но все же не удача проходит более одного места и успешно вставляется.
Надеюсь, вы, ребята, могли бы помочь в решении этого. Благодаря!
<cfquery name="GetCategories" datasource="#DbSource#" username = "#DbUserId#" password = "#DbUserPswd#">
SELECT category, rtrim(category) as tcategory
FROM role_category
ORDER BY category
FOR FETCH ONLY
</cfquery>
Populate dropdown, tried following 3 ways, neither works
1
<select name="category" id="category" size = "4" onChange="someFunction();">
<cfoutput query="GetCategories">
<option value ="#category#" >#category#</option>
</cfoutput>
</select>
2
<select name="category" id="category" size = "4" onChange="someFunction();">
<cfoutput query="GetCategories">
<cfset cat = replace(GetCategories.category," "," ","all")>
<option value ="#cat#" >#cat#</option>
</cfoutput>
</select>
3
<select name="category" id="category" size = "4" onChange="someFunction();">
<cfoutput query="GetCategories">
<cfset tcat = replace(GetCategories.tcategory," "," ","all")>
<option value ="#tcat#" >#tcat#</option>
</cfoutput>
</select>
in the action file:
<cfquery name="InsertUserRole" datasource="#DbSource#" username = "#DbUserId#" password = "#DbUserPswd#">
INSERT INTO role(role,desc, category)
VALUES ('#_role#','#form.desc#','#form.category#')
</cfquery>
Сообщение об ошибке из Coldfusion является: DB2 SQL Error: SQLCODE = -530, SQLSTATE = 23503, SQLERRMC = category1, ВОДИТЕЛЬ = 3.63.123
Обновление от комментариев:
Я попробовал, добавив это, но не сделал этого:
<cfqueryparam cfsqltype="cf_sql_char" value="#form.category#">
, пожалуйста, обратите внимание на вопрос, который задает вопрос – Vikrant
. Я понятия не имею, что вы просите. –
Нам нужно увидеть код. Если он использует переменные, укажите образцы значений, которые вы пытаетесь вставить, и полное сообщение об ошибке. Также публикация [DDL] (https://en.wikipedia.org/wiki/Data_Definition_Language) (только соответствующие поля) не повредит. – Leigh