[#47290] 改行やタグを含むデータをmysqlでinsertするには — Yosuke Suzuki <yosuke.suzuki@...>
鈴木と申します。
8 messages
2010/08/11
[#47303] マッチしない正規表現「.*?」が遅い? — SATOH Fumiyasu <fumiyas@...>
さとうふみやす @ OSSTech です。
7 messages
2010/08/16
[#47314] ruby on github and NonComitterHowto — masayoshi takahashi <maki@...>
高橋征義です。こんにちは。
6 messages
2010/08/18
[#47321] [ANN] Ruby 1.9.2リリース — "Yuki Sonoda (Yugui)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
9 messages
2010/08/18
[#47339] [ANN] rcairo 1.8.5 — Kouhei Sutou <kou@...>
須藤です。
10 messages
2010/08/28
[#47340] GAEについて — "T.Soejima" <clev@...2.so-net.ne.jp>
お世話になっております。そえじま@勉強中です。
6 messages
2010/08/28
[ruby-list:47294] Re: 改行やタグを含むデータをmysqlでinsertするには
From:
Yosuke Suzuki <yosuke.suzuki@...>
Date:
2010-08-11 14:35:29 UTC
List:
ruby-list #47294
皆様、様々ご教授いただきありがとうございました。
insert文を組み立てるようなやり方は、危ないということですね。
ちなみに、今回やろうとしていたのは、
def InsertRecord(tablename, hasharray)
略 insert文の組み立てと実行
end
というような関数を作って、
ハッシュ配列に入っているデータをmysqlに入れようと思っていました。
ハッシュ配列はkeyにテーブルのカラム名、valueにそのカラムに入れたいデータという構成です。
このハッシュ配列と対応するテーブルが6セットあり、
それぞれinsert文をかくより、関数を作って、ハッシュ配列を渡して
insert文を組み立てたほうが楽かなと
思ったのですが、こういうやり方よりは、
丁寧にそれぞれinsert文を書いた方がよいのでしょうか。
想定しているデータもとはウェブのフォームではないので、
SQLインジェクションの危険はありません。
ちなみに、教えていただいた以下のような書き方の場合、
executeに配列を渡して、複数のカラムの更新をすることはできないのでしょうか。
st = mysql.prepare('insert into hogetable(hogecolumn) values(?)')
st.execute("A\nB")
2010年8月11日22:49 Moru <lateau@gmail.com>:
> もると申します。
>
> 永遠なビギナーですが。。。
>
> DBによって違うと思いますがhtmlのタグの場合は、まずエスケープをさせた方がいいかも知れません。
> そして、クエリの発行と同時に(その前でも構いません)rubyかDB側でバインドをさせるという感じではないかと思います。
>
> エスケープの場合はDBによってはエラーを吐き出すこともあるので、プログラムの仕様と効率を考えて実装すればいいでしょう。
> postgresなどはtextを挿入する際に頭にEをつけることで、どんなデータでもテキストとしてprefixすることができます。
> 多分、mysqlでも同じような機能はついていると思います。
>
> ご参考までに。
>
> --
> Moru DRS
>
>
>
> 2010/8/11 田口 浩 <h-taguchi@secom.co.jp>:
>> たまーに投稿する田口ともうします。
>>
>> rubyを良く知らないのですが、データをそのまま使って
>> SQL文を組み立てるのは、引用符その他のハンドリングで
>> 大変なだけでなく、SQLインジェクションの温床となりますので、
>> プレースホルダ、とかデータバインドなどと呼ばれる方法を
>> 使ったほうが良いです。
>> SQL文を、
>> insert into hogetable(hogecolumn) values(?)
>> とし、?にデータを指定してSQLを実行します。
>> rubyでのやり方が判りませんが、多くの言語でこれが可能です。
>>
>> --
>> Regards,
>> h-taguchi
>>
>>> -----Original Message-----
>>> From: Yosuke Suzuki [mailto:yosuke.suzuki@gmail.com]
>>> Sent: Wednesday, August 11, 2010 5:27 PM
>>> To: ruby mailing list
>>> Subject: [ruby-list:47290] 改行やタグを含むデータをmysqlでinsertするには
>> ...
>>> このとき、カラムのデータ型がtext型で、「ああああ」となっている部分が
>>> 改行を含む文章のときは、どのように処理するのがよいのでしょうか。
>>> また文章中にはhtmlタグのような文字列も入ってきます。
>>
>>
>
--
--------------------------
Yosuke Suzuki
yosuke.suzuki@gmail.com