[ruby-list:47297] Re: 改行やタグを含むデータをmysqlでinsertするには

From: Nobuyoshi Nakada <nobu@...>
Date: 2010-08-12 10:03:07 UTC
List: ruby-list #47297
なかだです。

At Wed, 11 Aug 2010 23:35:29 +0900,
Yosuke Suzuki wrote in [ruby-list:47294]:
> ちなみに、今回やろうとしていたのは、
> 
> def InsertRecord(tablename, hasharray)
> 略 insert文の組み立てと実行
> end
> 
> というような関数を作って、
> ハッシュ配列に入っているデータをmysqlに入れようと思っていました。
> 
> ハッシュ配列はkeyにテーブルのカラム名、valueにそのカラムに入れたいデータという構成です。

単なるハッシュですか? それともハッシュの配列?

そのkeyからprepared statementを組み立てればいいのではないでしょ
うか。危険なのは、外部からのデータをSQL文に直接埋め込むことです。
まさかとは思いますが、カラム名はスクリプト内部で固定ですよね。

とりあえず引数は単なるハッシュだとしたらこんな感じでしょう。

def insert_record(tablename, hash)
  st = mysql.prepare("insert into #{tablename}(#{hash.keys*','})
values(#{['?']*hash.size*','})")
  st.execute(hash.values)
end

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next