mySQLで引用符を含む単語を置換するときのエラー
-
05-07-2019 - |
質問
すでに多くのレコードを更新しましたが、引用を含む単語については、次のエラーが表示されます:"エラー:Unclosed quote @ 1357"
このエラーが発生する理由はわかっていますが、解決方法がわかりません。
サンプルを次に示します。
UPDATE invnum SET cAccountName
= replace( cAccountName
、 'JOHN'S'、 'BEN')
事前に感謝します。
解決
文字列内の引用符をエスケープする:
UPDATE invnum SET cAccountName = replace(cAccountName,'JOHN\'S','BEN')
これに本当に注意したい-これを適切に処理しないことが SQLのソースですインジェクション攻撃、およびセキュリティ問題の主要な原因です。
他のヒント
スクリプトを使用してレコードを更新する場合は、組み込みのエスケープ機能を使用します。 mysql_real_escape_string
となるphpの場合代わりにこれを試してください:
UPDATE invnum SET cAccountName = replace(cAccountName,"JOHN'S","BEN")
文字列内で両方のタイプの引用符を使用する必要がある場合、文字列内で発生する文字列を囲むために使用する引用符のタイプをエスケープする必要があります実際に。
たとえば:
Johns becomes "Johns"
John's becomes "John's" or 'John\'s'
"John" becomes '"John"' or "\"John\""
et cetera。
所属していません StackOverflow