Coldfusion8 (MySQL 5.0.88) で検索クエリを実行しています。
クエリは、次のように Coldfusion で LEFT JOIN を構築します。
<cfquery datasource="db" name="q">
SELECT ...
</cfscript>
結果をループして、MySQL クエリ構文を作成します。
<cfset variables.pl= "LEFT JOIN pricelists p ON ">
<cfloop query="q" >
<cfscript>
if( q.listitem IS '' )
variables.pl = variables.pl & '(a.iln = p.iln AND p.pl= "-Standard-" AND p.ean = a.ean AND p.iln = "#q.iln_verkaeufer#") OR ';
else
variables.pl= variables.pl & '(a.iln = p.iln AND p.pl= "#q.pl#" AND p.ean = a.ean AND p.iln = "#q.userID#") OR
</cfscript>
</cfloop>
<cfset variables.pl= variables.pl& "(1=0)">
したがって、最終的には次のようになります。
LEFT JOIN plist p ON (p.iln = a.iln AND p.pl= "-Standard-" AND p.iln = "1111111111111") OR (p.iln = a.iln AND p.pl= "I" AND p.iln = "1111122222221") OR (1=0)
実際のクエリ synatx に入力されます。
SELECT art, count(*) as number
FROM article a
<cfqueryparam value="#variables.pl#" cfsqltype="cf_sql_longvarchar">
WHERE ...
これをトリガーしようとすると、サーバーがハングアップするだけで、ブラウザー タブを再起動してセッションを終了する必要があります。選択から他のすべての検索条件を削除しました。エラーは、cfqueryparam がテキスト コンストラクトに供給されているために発生します。
ただし、エラーが発生しないため、何が問題なのかわかりません。ブラウザが死んでしまうので、ある種の無限ループを作成していると思います。
質問
私のコードから、私が間違っていることを誰かが知ることができますか?
ありがとう!
編集: サーバーのハングアップからコミットエラーに至ることができました。しかし、スクリプトは Ajax 呼び出しによってトリガーされ、CFadmin にリモートでアクセスできないため、何が問題なのか盲目的に推測する必要があります。