1

ColdFusion 11 と MySQL5 データベースを使用しており、すべてが UTF-8 文字エンコーディングに設定されています。選択に一重引用符が含まれていると、選択が正しく機能しません。簡単な例を次に示します。

私は単純なSQLを持っています:

select * from table where column = 'I've got a single quote';

私のSQLクライアントでは、これを変更して一重引用符をエスケープする必要があるため、次のようになります。

select * from table where column = 'I''ve got a single quote';

そして、これは正しく機能します。

ColdFusion では、クエリは次のようになります。

    <cfquery name="qryName" datasource="dsn">
            select * from table where column = <cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="I've got a single quote" />
    </cfquery>

ただし、行は返されず、エラーはありません。

私も preserveSingleQuotes を使用してみましたが、まだ何も返されません:

<cfqueryparam CFSQLType="CF_SQL_VARCHAR" value="#preserveSingleQuotes(I've got a single quote)#" />

誰が何が悪いのか提案できますか?

--- 非発行 ---

私のテストは十分ではなかったようです。私がテストしていたデータは、私が期待したものではないことが判明しました。JSON パケットからデータを取得していました。ブラウザにダンプすると、次の文字列が表示されました。

Didn't vote 

しかし、実際のパケットを調べると、文字列の JSON 表現が次のようになっていることがわかりました。

Didn&#39;t vote

したがって、データベースにあるものと一致しませんでした。残念ながら、これは問題ではなく、cfqueryparam の力に対するすべての信頼が回復しました :-)

4

0 に答える 0