昨日、仕事で引っ掛かった内容。
エラーが解消できなくて、いったん諦めたのに、
ひと晩明けて今日になったらあっけなく解消した。
こーゆーのは、ちゃんと残しておかないと、またド忘れする。
備忘録的にメモ。
#!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;