- PR -

フォームに入力した文章をMySqlに記録

1
投稿者投稿内容
ttsk
会議室デビュー日: 2005/03/20
投稿数: 3
投稿日時: 2005-03-20 18:09
ttskと申します。
"フォームに入力した文章をMySqlに記録する" という初歩的なことを試しています。

<%
String MyText = request.getParameter("MyText");//MyTextがフォームに入力した値

out.println(MyText);//jspに渡ってきているか確認

String sql = "insert into testtable values (1,MyText,12345)";
......
......
%>
以上の部分でmysql:test.testtableに書き込みを試みますが、
" java.sql.SQLException: Unknown column 'MyText' in 'field list' "
とエラーがでてしまいます。MyText変数の代わりに、(フォームを使わずに)
"insert into testtable values (1,'spring has come',12345)";などとすると書き込みはできます。

変数を使って書き込む方法をお教えください。
環境:
Win2000 SP4
Tomcat5.0.30
MySql5.0.0-alpha-nt
jdk-1.5.0

[ メッセージ編集済み 編集者: ttsk 編集日時 2005-03-20 18:22 ]
しゅう
会議室デビュー日: 2004/02/07
投稿数: 7
投稿日時: 2005-03-20 19:34
String sql = "insert into testtable values (1,'" + MyText + "',12345)";
でよいと思います。

変数と文字列は連結してあげましょう。
ttsk
会議室デビュー日: 2005/03/20
投稿数: 3
投稿日時: 2005-03-20 20:11
ご回答ありがとうございます。

さっそく試しました。書き込めました。
感謝です。

ttsk
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-03-21 04:14
どもです。がるです。
んっと…もう見てないかなぁとは思いつつ、ほかの方のためにも
なると思うので、一言。

「フォームに入力した文章」を未加工のまま(つまり、データをそのまま)
SQLで書き込もうとすると、あっというまに脆弱性が発生します。
最低限、'とか;とか\とか(その他DBMSによっていくつか)は、きちんと
適切なものに変換をかけてあげてください。
「サニタイジング(sanitizing)」とかって単語をGoogleあたりで
検索すると詳細が出てくるかと思いますので :-P

ttsk
会議室デビュー日: 2005/03/20
投稿数: 3
投稿日時: 2005-03-21 17:49
アドバイスありがとうございます。

公開の掲示板類で使用するときは、サニタイジング機能をいれないといけませんね。

//手軽な(=料金の安い)レンタルサーバーでTomcatの使えるところ、ご存知ですか?

ttsk
1

スキルアップ/キャリアアップ(JOB@IT)