- 締切済み
SQL文のエスケープについて質問です。
SQL文のエスケープについて質問です。 <table></table><tr></tr>=:<%' というデータをDBに登録したいのですが、 置換文字を求められてしまい、うまくいきません。 どのようにエスケープすれば良いのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Siegrune
- ベストアンサー率35% (316/895)
回答No.2
エスケープは、データベースに依存します。 また、 データベースが何かを書かずにエスケープする方法を聞かれても、 答えが意味ないものになりかねないのですが。 例えばOracleやSQL Serverなら、 前後を''でくくると文字列になり、質問文内の'をエスケープする必要が出てきます。 'は、''と2個にするとエスケープされます。 MySQlなら、\を前におく。 つまりは、 'は、\'とする。 だったかな。 ODBCかJDBCかによってもescape句が使えたり使えないかもしれなかったり・・・。 ま、環境を書かないと正しい答えは手に入らないということでした。 (ANSI等に規定されていないのでデータベースによってバラバラということみたい。) そもそも、ANo1の書かれた方法を使うほうが簡単かつSQLインジェクション対策としてはやりやすい ということもありますが。 (エスケープし忘れてSQLインジェクション等が動いてしまうこともある。 このソースなら、データベースに格納した結果を画面に表示したときに項目の値とならずに 画面にテーブルがでてきてレイアウトが崩れるかも。)
- corokorocoro
- ベストアンサー率29% (63/211)
回答No.1
今時エスケープ処理なんてやらない。 プレースホルダを使う。