我在 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)
这被输入到实际的查询语法中:
SELECT art, count(*) as number
FROM article a
<cfqueryparam value="#variables.pl#" cfsqltype="cf_sql_longvarchar">
WHERE ...
如果我尝试触发此操作,服务器就会挂起,我需要重新启动浏览器选项卡以结束会话。我已从我的选择中删除了所有其他搜索条件。该错误是由提供我的文本构造的 cfqueryparam 引起的。
但是我不知道问题可能是什么,因为我从来没有收到错误。浏览器刚刚死机,所以我想我正在创建某种无限循环。
问题
谁能从我的代码中看出我做错了什么?
谢谢!
编辑: 我设法从服务器挂断到提交错误。但是由于脚本是由 Ajax 调用触发的,并且我无法远程访问 CFadmin,因此我需要猜测问题可能是什么。