動的に生成されたクエリがあります。1 つのパラメーターを除くすべてのパラメーターはオプションであり、1 つの必須フィールドがあります。私は頭が良いと思っていましたが、非常に奇妙なことが起こります。
-cfscript
// Standard new query(), set name, datasource etc
query.addParam(value=requiredParam, type=cf_sql_varchar);
sqlStatement = "select ....";
if (optional field 2){
sqlStatement &= "and field like '%?%' ";
query.addParam(value=optionalValue, type=cf_sql_varchar);
}
... optional fields 2,3,4,5 repeats ...
query.execute(sql=sqlStatement);
そのため、必要なフィールドのみを渡して実行すると、クエリは正しく、結果も正しくなります。ダンプは、sqlParameter に必要なエントリのみを表示します (2 つの結果を含む)
オプションの引数を使用して呼び出しを追加すると、最初の引数のみが表示されます (必須の引数が表示されます)。オプションの引数は (結果ダンプに) 表示されず、結果セットは 0 行になります。(?? 非常に奇妙な)
デバッガーでトレースしました (CF9 スタンドアロンでは、ビルダーではなく、cf8 拡張機能、cfeclipse から)。
オプションのフィールド ロジックは正しく、コードはテストおよび実行されました。変数ペインでは、パラメータが適切に追加されたように見えますが、結果クエリには表示されません (結果ページにダンプされます) 必要なものだけです。
何か奇妙なことが起こっていると推測していますが、これは意味がありません。すべての addParams を一緒に追加する必要がある可能性はありますか? ライク(構文)が問題ですか?
ifs/conditional を使用すると、追加の addParams が機能しない/表示されないのはなぜですか? ダンプによる奇妙な表示の問題?
デリケートな領域で実際のコードを提供していないことをお詫びします。