2012-05-07 9 views
1

MySQLで大混乱の原因となりそうな厄介な一重引用符は、いとこを持っているようです。私たちには、ユーザーが電子メールのコンテンツを貼り付けるか、ほぼどこからでもコピー&ペーストするといった、クライアントからの仕事の更新があり、1つの見積もりを提供するたびに別のポップアップを表示するシステムがあります。ここでは異なるものがあります: - :削除し、私は、その専門外これを好きではないRegex異なる種類の一重引用符を置き換えよう

return Regex.Replace(oldText, @"[’´'`""]", @""); 

< ’ ´ ' `

私の正規表現はかなり弱いとは、私の仲間の開発者は、私はちょうど使用してそれらを削除すべきであると述べましたすべての一重引用符。私がしたいことは、多くのフォーラムが示唆しているように、一重引用符を二重にするだけです。これは正しいでしょうか?

return Regex.Replace(oldText, @"[’´'`""]", @"''"); 

彼のDALに、彼は単一引用符で彼のINSERT文を構築するため、このしかしが、行われます。

sql.Append(",`to_complete_by`='" + obj.toCompleteBy + "'"); 

私はこれに^^を変更することにより、このエラーを回避することができるだろうか?

sql.Append(",`to_complete_by`=\"" + obj.toCompleteBy + "\""); 

または正規表現の代わりに正規表現を使用しますか?

+7

あなたが説明しているすべての方法は回避でき、回避されます。あなたが所有したくない場合は、準備文を使用してください。 –

+1

なぜ単にSqlParametersを使用しないのですか?何かを置き換える必要がなくなります。 – shriek

+0

私は準備文について考えていましたが、何らかの理由でmySql 4.01を使用する必要がありました。幸いにもそれをサポートしているようです。私は同意する、これはすべてに "プラスター"を入れて、何か他のほとんどのポップアップが表示されます。しかし、SqlParametersでそれほど手がかりにはなっていませんが、私はそれを読み上げる必要があります。みんなありがとう ;) –

答えて

1

プリペアドステートメントをサポートしていない古いバージョンのMySQLを使用している場合は、最新のデータベースインターフェイスがデータベース自体でサポートされていない機能をエミュレートできるという点を少なくとも利用する必要があります。あなたのケースでは、潜在的なパフォーマンスの向上ではありませんが、ステートメント構文とバリュー表現の分離によるセキュリティの強化です。

関連する問題