金光です。どもっ (_ _)

クッキーのセッションには、配列を入れると文字列になってしまうの
でしょうか???

プログラムは:
──────────────────────────────────────
require "cgi"
require "dbi"
require "cgi/session" # 今回はこれを使う

# フォームの値をハッシュで取得
cgi = CGI.new("html3")
params = cgi.params


p params ################################ デバッグ用


# データベースに接続
dbh = DBI.connect('dbi:OCI8:', 'ruby', 'oci8')

# SQL文
sql = "select * from sample01"

# クッキーの処理
sess = CGI::Session.new(cgi, "session_key" => "rubyweb",
                             "session_id" => "9650",
                             "new_session" => true,
                             "prefix" => "web-session.")

sess["CHK"] = params['KEYWORD'] if ( sess["CHK"] == nil )
sess["CHK_NEW"] = params['KEYWORD']
sess["CHK"] = sess["CHK"] + sess["CHK_NEW"]

p sess["CHK"] ########################### デバッグ用


aho





# 検索キーワードが指定されている場合の処理
if ( params != {} ) then
  sql += %q( where )

  sess["CHK"].each do
    sql += %q( SongName=? or )
  end
  sql.sub!( /or $/, "" )
end


p sql #################################### デバッグ用


# SQLの設定
sth = dbh.prepare(sql)

if ( params != {} ) then
  i = 1
  sess["CHK"].each do | keyword |
    sth.bind_param(i, keyword)
    i += 1
  end
end

# 設定されたSQL文を実行
sth.execute

# レコードの取得
str = ""
sth.fetch_hash do |record|
  str += record.inspect + "\n"
end


# HTMLの出力
cgi.out({"charset"=>"shift_jis"}) do
  cgi.html() do
    cgi.head { cgi.title{"TITLE"} } +
    cgi.body() do
      cgi.form() do
        cgi.textarea("get_text") +
        cgi.br +
        cgi.submit
      end +
      cgi.pre() do
        CGI::escapeHTML(
          "検索文字列は#{params['KEYWORD'].inspect}です\n" +
          str
        )
      end
    end
  end
end

# データベースを閉じる
dbh.disconnect
──────────────────────────────────────



実行結果は:
──────────────────────────────────────
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:


{"KEYWORD"=>["Song 1"]}
"Song 1Song 1Song 1Song 1"
C:\Inetpub\Scripts\list3.rb:32: undefined local variable or method `aho' for # (NameError)
──────────────────────────────────────



のようになります。(エラーは意図的に起こしています)

問題は、なぜ

 "Song 1Song 1Song 1Song 1"

のようになるか? です。

sess["CHK_NEW"] = params['KEYWORD']

としたときに、配列が文字列に変換されているように思うのですが、ちと困りました。

だれか助けてください (_ _)



M.Kanemitsu
―――――――――――――――
金光雅夫 masao-k / a-net.email.ne.jp

http://www.masao-k.net
http://isweb14.infoseek.co.jp/art/soshikon/
http://isweb15.infoseek.co.jp/computer/ruby256/
〒216-0031 川崎市宮前区神木本町5-14-12
自宅: 044-877-5006
携帯: 090-2753-5292