MySql データベース内のアイテムのステータスを変更する非常に単純なスクリプトがあります。IE7 では正常に動作しますが、Firefox で試してみると、動作しているように見えますが、動作していません...これは非常に奇数。
コードは非常に単純です。最初に、探しているレコードの詳細を取得します。
<cfscript>
// Get the Product Attribute details
Arguments.qGetProductAttribute = Application.cfcProducts.getProductAttributes(Arguments.iProductAttributeID);
</cfscript>
これは正常に機能しています。結果をダンプすると、期待どおりのレコードの内容になります。次に、if ステートメントを使用して、「アクティブ」フィールドを 1 から 0 に、またはその逆に変更します。
<!--- If Product Attribute is active, mark as inactive --->
<cfif Arguments.qGetProductAttribute.bActive EQ 0>
<cfquery name="qChangeStatus" datasource="#Request.sDSN#">
UPDATE tblProductAttributes
SET bActive = <cfqueryparam value="1" cfsqltype="CF_SQL_INTEGER" maxlength="1" />
WHERE iProductAttributeID = <cfqueryparam value="#Arguments.iProductAttributeID#" cfsqltype="CF_SQL_INTEGER" />;
</cfquery>
<!--- Else if Product Attribute is inactive, mark as active --->
<cfelseif Arguments.qGetProductAttribute.bActive EQ 1>
<cfquery name="qChangeStatus" datasource="#Request.sDSN#">
UPDATE tblProductAttributes
SET bActive = <cfqueryparam value="0" cfsqltype="CF_SQL_INTEGER" maxlength="1" />
WHERE iProductAttributeID = <cfqueryparam value="#Arguments.iProductAttributeID#" cfsqltype="CF_SQL_INTEGER" />;
</cfquery>
</cfif>
これが機能しない理由はまったくわかりません...そして実際、IE7では完全に機能します...
このスクリプトの実行後、ブラウザはこれらのレコードをすべて表示するページに戻ります。各レコードについて、「bActive」フィールドが「1」に設定されている場合は「アクティブ」という単語が表示され、「ゼロ」に設定されている場合は「無効」が表示されます。十分に単純です。
スクリプトを実行してレコードを無効にすると、Firefox は実際には「無効」という単語を期待どおりに表示しますが、データベース レコードは変更されません!
私は途方に暮れています...サーバー側のコードが、あるブラウザーでは正常に機能し、別のブラウザーでは正常に機能しないのはどうしてでしょうか?!