• 締切済み

SQL文のエスケープについて質問です。

SQL文のエスケープについて質問です。 <table></table><tr></tr>=:<%' というデータをDBに登録したいのですが、 置換文字を求められてしまい、うまくいきません。 どのようにエスケープすれば良いのでしょうか。

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

エスケープは、データベースに依存します。 また、 データベースが何かを書かずにエスケープする方法を聞かれても、 答えが意味ないものになりかねないのですが。 例えばOracleやSQL Serverなら、 前後を''でくくると文字列になり、質問文内の'をエスケープする必要が出てきます。 'は、''と2個にするとエスケープされます。 MySQlなら、\を前におく。 つまりは、 'は、\'とする。 だったかな。 ODBCかJDBCかによってもescape句が使えたり使えないかもしれなかったり・・・。 ま、環境を書かないと正しい答えは手に入らないということでした。 (ANSI等に規定されていないのでデータベースによってバラバラということみたい。) そもそも、ANo1の書かれた方法を使うほうが簡単かつSQLインジェクション対策としてはやりやすい ということもありますが。 (エスケープし忘れてSQLインジェクション等が動いてしまうこともある。  このソースなら、データベースに格納した結果を画面に表示したときに項目の値とならずに  画面にテーブルがでてきてレイアウトが崩れるかも。)

回答No.1

今時エスケープ処理なんてやらない。 プレースホルダを使う。