わかりにくいタイトルですが、ここではっきりと解説します。 <cfscript>
の内側のクエリオブジェクトを使用して、フォーム内のいくつかのSQLを持っている場合:ColdFusionコンポーネントのcfscript内のクエリーオブジェクト内のSQLの単一引用符
SELECT city + ', ' + state + ' ' + zip as Address2
FROM users WHERE user_id = :userid
ColdFusionが出てエラーになります。 addParam
を使用して追加したパラメータは:userid
であり、状態とzipの間で' '
を削除すると、クエリは完全に機能します。何らかの理由でそのスペースを追加すると、クエリオブジェクトが壊れてしまい、:
シンボルの近くに誤った構文が返されます。
このクエリは、単に<cfquery>
を使用するとうまく動作しますが、<cfscript>
で使用します。何か案は?これはバグですか?または私は何かを逃している?
編集:私はColdFusion 9、MS SQL 2005を使用しています。これはcfscript構文を使用したCFCの内部で行われています。同様に:
component
{
public function getAgent(member_id)
{
qryAgent = new query(dataSource="Members");
qryAgent.setName("get_agent");
qryAgent.addParam(name="memberid",value=member_id,cfsqltype="CF_SQL_INTEGER");
result = qryAgent.execute(sql="SELECT FirstName, LastName, FirstName + ' ' + LastName as FullName FROM Member m WHERE m.member_id = :memberid");
return result.getResult();
}
}
ただ推測しますが、一重引用符で囲まれた文字列内のクエリです。内側引用符をエスケープするか、または外側引用符を二重引用符に変更しますか? – BennyB
これらの3つの列はすべて同じタイプですか?すべてのcharまたはvarchar()? –
はい、そうです。もう一度+ ''を削除すると、すべてが完璧に機能します。 – derickito