Я был разработчиком CF в течение 15 лет, и я никогда не сталкивался ни с чем таким странным или разочаровывающим. Я часами вырывал волосы, гуглил, отвлекал, упрощал, молился и делал все наоборот. Вы можете мне помочь?
Функция cffunction принимает один строковый аргумент, и из этой строки я строю массив «фраз» для выполнения запроса, пытаясь сопоставить имя местоположения в моей базе данных. Например, строка "республика валуна" будет производить массив: ["the", "Republic", "of", "boulder", "Republic", "Republic of", "Republic of Boulder" , "республика", "республика валун", "валун"].
Другая функция использует вышеупомянутую функцию и запускает запрос. Запрос на основе ранее приведенного примера будет ...
выберите locationid, locationname, locationaliasname из vwLocationsWithAlias, где LocationName в (',' республика ',' республика ',' республика ',' республика ',' республика валуна ',' of ',' валуна ',' валун ') или LocationAliasName в (', 'республика', 'республика', 'республика', 'республика', 'республика валун', 'of', 'валун' 'валун')
Возвращает 2 записи ...
locationid - locationname - locationalias
99 - «Валун» - «республика»
68 - «Валун» - NULL
Это хорошо. Работает отлично и денди. ОДНАКО ... если строка изменяется на "республика", в результате получается массив фраз ["," республика "," республика "], который затем используется для создания запроса ...
выберите locationid, locationname, locationaliasname из vwLocationsWithAlias, где LocationName в («,» республика, «республика») или LocationAliasName в («,» республика »,« республика »)
Возвращает 0 записей. Чего-чего?! Хорошо, просто чтобы убедиться, что я невольно ВЫСОКИЙ, я выполняю тот же самый запрос в моей консоли SQL к той же базе данных в источнике данных cf. 1 ЗАПИСЬ!
locationid - locationname - locationalias
99 - «Валун» - «республика»
Я даже могу жестко закодировать этот sql в пределах одной и той же функции и получить этот единственный результат, но не из динамически сгенерированного SQL. Я могу получить свои фразы местоположения из другой функции с другим именем, которая возвращает жестко запрограммированные значения массива, и они работают, но никогда, если массив создается динамически. Я пытался удалить cfqueryparams, трижды проверять мои типы данных, настройки источника данных и т. Д., И т. Д., И т. Д. И т. Д. NO DICE
WTF !? Это неясная ошибка? Я схожу с ума? Я перепробовал все, что мог, и другие (включая Рэя Камдена) могли придумать.
ColdFusion 8 (со всеми последними исправлениями)
SQL Server 2005 (со всеми лучшими пакетами обновлений)
Windows 2003 Server (со всеми последними обновлениями, пакетами обновлений и ночным MS voodoo)