cfquery を作成しましたが、正当な理由もなく機能しないことが何度かありました。たとえば、最近、次のようなクエリがありました。
<cfquery name="get_projects" datasource="#application.dsn#">
SELECT *
FROM projects
WHERE project_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#project_id#">
<cfif start_date NEQ "">
AND project_start_date = <cfqueryparam cfsqltype="cf_sql_timestamp" value="#start_date#">
</cfif>
ORDER BY project_name
</cfquery>
start_date 変数が空の文字列であることを確認しました。ただし、その行を指すエラーが表示され、「値を要求された型に変換できません」というエラーが表示されますが、その行に到達することはありません。
しかし、ここで本当に奇妙なことがあります.. "AND 1=1" を WHERE 句に追加すると、クエリは完全に機能します。
これは多くのクエリで散発的に発生しましたが、パターンを認識しているとは言えません。常にクエリは完璧に書かれています。場合によっては、クエリが以前は機能していたのに、おそらくファイルの別の場所で変更があったときに、突然停止することがあります。WHERE 句に「AND 1=1」を追加するだけで、再び機能します。他の誰かがこれに遭遇したり、それを修正する方法を考えていますか?