[Perl] データベースから取得したレコードをJSON形式で出力する

投稿者: | 2011/07/28

昨日、仕事で引っ掛かった内容。

エラーが解消できなくて、いったん諦めたのに、
ひと晩明けて今日になったらあっけなく解消した。

こーゆーのは、ちゃんと残しておかないと、またド忘れする。
備忘録的にメモ。

#!user/perl/bin/perl

use strict;
use warnings;

use CGI;
use DBI;
use JSON;

 my $cgi = CGI->new();
 my $where_string = $cgi->param('WHERE_STRING');

#データベース接続情報
 my $data_source = 'DBI:mysql:database_name:host_name';
 my $username 	 = 'hoge';
 my $auth 		 = 'password';

 my $dbh = DBI->connect($data_source, $username, $auth);
	$dbh->do("SET NAMES utf8");

 my $sql = "SELECT * FROM table_name WHERE field_name = $where_string ;";
 my $sth = $dbh->prepare($sql);
	$sth->execute();

 my $JSON = '['; # JSONハッシュの配列にするので
while ( my $ref = $sth->fetchrow_hashref() ){	# ハッシュ参照を順次取り出し
	$JSON .= (JSON->new->encode($ref).', ');	# JSON文字列に変換して連結
}
    $JSON =~ s/,.$//s; # 最後のカンマを除去(正規表現を使用)
    $JSON .= ']'; # JSONハッシュ配列の閉じ

print $cgi->header(-charset=>'UTF8');	# 出力時に再度UTF8指定を忘れないように
print $JSON;
 
 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください