連載
PerlでMySQL操作CGIを作ろう:快速MySQLでデータベースアプリ!(4)(4/4 ページ)
いよいよ本連載のかなめであるデータベースアプリケーション・プログラミングについて解説するときがきた。まず手始めとして、PerlでMySQLを操作する方法を紹介する。Perlを使う際のポイントは、Perl用汎用データベースAPIであるDBIのマスターにある。
Appendix
1 #!/usr/bin/perl 2 3 use DBI; 4 require 'jcode.pl'; 5 6 $user = 'test'; 7 $passwd = 'test2001'; 8 $db = DBI->connect('DBI:mysql:ATMARKIT:localhost', $user, $passwd); 9 10 # FORMからデータを読み込む 11 $len = $ENV{'CONTENT_LENGTH'}; 12 read(STDIN, $std, $len); 13 @args = split(/&/, $std); 14 foreach $arg ( @args ){ 15 ($name, $val ) = split(/=/, $arg); 16 $val =~ s/\+/ /g; 17 $val =~ s/%([0-9a-f][0-9a-f])/pack('C', hex($1))/egi; 18 &jcode'convert(*val, 'euc'); 19 $form{$name} = $val; 20 } 21 22 print <<HEADER; 23 Content-type: text/html 24 25 26 <html> 27 <head> 28 <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-euc-jp"> 29 <title>Sample MySQL+Perl</title> 30 </head> 31 <body> 32 HEADER 33 34 if($form{command} eq 'select' || $form{command} eq 'delete'){ 35 if($form{name} ne '' ){ 36 $where .= "name like '\%$form{name}\%'"; 37 } 38 if($form{name} ne '' && $form{memo} ne ''){ 39 $where .= " and " 40 } 41 if($form{memo} ne '' ){ 42 $where .= "memo like '\%$form{memo}\%'"; 43 } 44 45 if($where ne ''){ 46 $where = "WHERE " . $where; 47 } 48 49 if($form{command} eq 'select'){ 50 $sth = $db->prepare("SELECT name, memo FROM list $where"); 51 $sth->execute; 52 $num_rows = $sth->rows; 53 print "<h1>該当 $num_rows 件</h1>"; 54 for ($i=0; $i<$num_rows; $i++) { 55 @a = $sth->fetchrow_array; 56 print "<h2>name=$a[0] memo=$a[1]</h2>"; 57 } 58 $sth->finish; 59 } 60 if($form{command} eq 'delete'){ 61 $sth = $db->prepare("delete FROM list $where"); 62 $sth->execute; 63 print "<h1>削除完了</h1>"; 64 $sth->finish; 65 } 66 67 }elsif($form{command} eq 'insert'){ 68 if($form{name} eq '' ){ 69 print "<h1>nameが空白では登録できません</h1>"; 70 }else{ 71 $sth = $db->prepare("insert into list (name,memo) values ('$form{name}','$form{memo}')"); 72 $sth->execute; 73 print "<h1>登録完了</h1>"; 74 $sth->finish; 75 } 76 } 77 78 $db->disconnect; 79 80 print <<FOOTER; 81 </body> 82 </html> 83 FOOTER
リスト4 今回作成したデータベース操作CGIの全文(sample3.cgi)。[ココ]をクリックすると、行番号のないスクリプトファイルをダウンロードできます
Copyright © ITmedia, Inc. All Rights Reserved.