[DBI]の検索結果
PerlのプログラムからDBI経由でMySQLに接続し、SELECT文でデータを取得する処理のサンプルプログラムです。
あらかじめphpMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3件のレコードを登録しておきます。
CREATE TABLE `users` (
`userid` varchar(100) COLLATE utf8_bin NOT NULL,
`password` varchar(250) COLLATE utf8_bin NOT NULL,
`status` int(11) NOT NULL,
`auth` int(11) NOT NULL,
`username` varchar(250) COLLATE utf8_bin NOT NULL,
`address` varchar(250) COLLATE utf8_bin NOT NULL,
`mailaddr` varchar(100) COLLATE utf8_bin NOT NULL,
`hpurl` varchar(250) COLLATE utf8_bin NOT NULL,
`widgets` text COLLATE utf8_bin NOT NULL,
`createdate` datetime NOT NULL,
`lastupdate` datetime NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('admin','1234','1','0','webmaster','',
webmaster100@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test1','5678','1','1','user 1','',
'test1@59log.com','http://59log.com/','',now(),now());
insert into `users` (`userid`,`password`,`status`,`auth`,
`username`,`address`,`mailaddr`,`hpurl`,`widgets`,
`createdate`,`lastupdate`)
values('test2','abcd','1','1','user 2','',
'test2@59log.com','http://59log.com/','',now(),now());
以下のPerlプログラムでは、テーブル「users」からステータスが1のレコードを全て取得、一旦配列に格納してから標準出力に出力しています。
検索条件の設定にはプレースホルダを使用し、DB処理でエラーが発生した場合は、例外処理に飛んでエラーの内容が出力されるように、RaiseErrorに1を設定しています。
--- mysql_select.pl ---
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $data_source = "DBI:mysql:testdb"; # 接続先はtestdb
my $username = "test"; # データベースへのアクセス権限を持つユーザーを指定
my $password = "abcd"; # そのパスワード
my $status = 1;
my @recs = ();
eval {
my $dbh = DBI->connect($data_source, $username, $password,
{RaiseError => 1, PrintError => 0});
my $sql = "select * from users where status = ?";
my $sth = $dbh->prepare($sql);
$sth->execute($status);
while (my @rec = $sth->fetchrow_array) {
push @recs, [@rec];
}
$sth->finish;
$dbh->disconnect;
};
if ($@) {
print "Error : $@\n";
}
foreach my $rec (@recs) {
print join(",", @{$rec}), "\n";
}
Template Toolkit (TT)は、HTML::Templateなど他のテンプレートと比較してより汎用性の高い処理をすることが可能なテンプレートエンジン。出力をサブルーチンに渡したりファイルに出力することもできる。
また、テンプレートファイル内の変数置換だけでなく、テンプレートの中にTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能。
The Template Toolkit is a fast, flexible and highly extensible template processing system.
It is Free (in both senses: free beer and free speech), Open Source software and runs on virtually every modern operating system known to man.
It is mature, reliable and well documented, and is used to generate content for countless web sites ranging from the very small to the very large.
Template Toolkit Home Page
Template Toolkit Manual -テンプレートツールキット和訳マニュアル-
Template Toolkit Manual(英語)
また、テンプレートファイル内の変数置換だけでなく、テンプレートの中にTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能。
The Template Toolkit is a fast, flexible and highly extensible template processing system.
It is Free (in both senses: free beer and free speech), Open Source software and runs on virtually every modern operating system known to man.
It is mature, reliable and well documented, and is used to generate content for countless web sites ranging from the very small to the very large.
Template Toolkit Home Page
Template Toolkit Manual -テンプレートツールキット和訳マニュアル-
Template Toolkit Manual(英語)
Perl Template Toolkit
Oreilly & Associates Inc 著者:Darren Chamberlain,David Cross,Andy Wardley 価格:3,294円
PerlからDBIモジュールを使ってMySQLのテーブルにINSERT文でシングルクオートの含んだレコードを追加するには、次のようにprepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、execute メソッドで値を渡してやればいいらしい。
my $sth = $dbh->prepare("insert into mytable(foo,bar,baz) VALUES(?,?,?)");
$sth->execute($foo, $bar, $baz);
INSERT文に限らずSQL文で変数値を渡す場合は、プレースホルダを使えばいいのか。
mysqlデータベースにinsertできない
DBI/DBDの使い方
Perl で、バイナリデータを MySQL に登録する
実践ハイパフォーマンスMySQL 第2版
オライリージャパン 著者:Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling 価格:4,830円 評価:★★★★★
- 類似書は全部不要、究極の解説書 ★★★★★
1
アクセスランキング
今日のアクセスランキング TOP 10
- Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
- 2ちゃんねる(2ch) (3 PV)
- 大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
- FC2まとめ (2 PV)
- 中国で「テンセント」のAIが中国共産党を「腐敗して無能」と批判し粛清される #人口知能 (2 PV)
- ほしい物リスト (2 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
- 掲示板CGI ThreadPlus 1.2 のリリース (2 PV)
- 暇つぶしのコンテンツで有料化は無理ではないかと (2 PV)
- 切込隊長(きりこみたいちょう) (2 PV)
今月のアクセスランキング TOP 10
- FC2まとめ (10 PV)
- 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
- 掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
- 「Kindle for the Web」 (5 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (5 PV)
- Jipanguの配布は終了しました (4 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (4 PV)
- Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
- 「さくらのクラウド」のオプションサービスで「専有ホスト」の提供を開始 (3 PV)
- ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (3 PV)
アクセス統計
ディレクトリ
関連サイト

