ユーザ用ツール

サイト用ツール


perl:modules:dbdmysql

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
perl:modules:dbdmysql [2018/06/25 10:40] – 外部編集 127.0.0.1perl:modules:dbdmysql [2018/07/20 14:16] (現在) taka
行 5: 行 5:
 [[http://search.cpan.org/~capttofu/DBD-mysql-4.018/lib/DBD/mysql.pm|CPAN - DBD::mysql]] [[http://search.cpan.org/~capttofu/DBD-mysql-4.018/lib/DBD/mysql.pm|CPAN - DBD::mysql]]
  
-:!:<color red>**MySQL と DBI をあらかじめインストールしておくこと。**</color>+:!:<color red>**MySQLとDBIをあらかじめインストールしておくこと。**</color>
  
-CPAN 経由でインストールするなら+CPAN経由でインストールする方法。
  
-<sxh bash; gutter: false;>+<sxh bash; gutter: false>
 $ sudo cpan $ sudo cpan
-install DBD::mysql+cpan> install DBD::mysql
 </sxh> </sxh>
  
行 20: 行 20:
 libmysqlclient.18.dylib絡みのエラーが出た場合は以下を試して再実行。 libmysqlclient.18.dylib絡みのエラーが出た場合は以下を試して再実行。
  
-<sxh bash; gutter: false;>+<sxh bash; gutter: false>
 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
 </sxh> </sxh>
行 26: 行 26:
 ===== 初期化 ===== ===== 初期化 =====
  
-<sxh perl; gutter: true;>+<sxh perl>
 #!/usr/bin/perl #!/usr/bin/perl
  
 BEGIN { BEGIN {
- use File::Basename; +  use File::Basename; 
- chdir dirname( $0 );+  chdir dirname($0);
 } }
    
行 43: 行 43:
  
 # 初期設定 # 初期設定
-my $host     '127.0.0.1'+my $host     "127.0.0.1"
-my $user     'hoge'+my $user     "hoge"
-my $pass     'hoge'+my $pass     "hoge"
-my $database = 'test_database'+my $database = "test_database"
-my $table    = 'test_table';+my $table    = "test_table";
  
 # インスタンス変数の生成 # インスタンス変数の生成
-my $dbh = '';+my $dbh = "";
 $dbh = "DBI:mysql:$database:$host"; $dbh = "DBI:mysql:$database:$host";
-$dbh = DBI->connect( $dbh, $user, $pass, { 'PrintError=> 0 } );+$dbh = DBI->connect($dbh,$user,$pass,{"PrintError=> 0});
 print "Error: $DBI::err $DBI::errstr\n" if $DBI::err; print "Error: $DBI::err $DBI::errstr\n" if $DBI::err;
  
行 58: 行 58:
 # #
 # RaiseError # RaiseError
-#   1(On) を指定すると、エラー発生時に例外 die() を発する。デフォルトは 0(Off)。+#   1(On)を指定すると、エラー発生時に例外 die() を発する。デフォルトは 0(Off)。
 # PrintError # PrintError
-#   1(On) を指定すると、エラーコードを返すことに加えて警告を発する。デフォルトは 1(On)。+#   1(On)を指定すると、エラーコードを返すことに加えて警告を発する。デフォルトは 1(On)。
 # AutoCommit # AutoCommit
-#   0(Off) を指定すると、明示的にコミットまたはロールバック出来るようになる。デフォルトは 1(On)。+#   0(Off)を指定すると、明示的にコミットまたはロールバック出来るようになる。デフォルトは 1(On)。
  
 # ※AutoCommit はストレージエンジンに InnoDB または BDB を使用しているテーブルに対してのみ使用出来る。 # ※AutoCommit はストレージエンジンに InnoDB または BDB を使用しているテーブルに対してのみ使用出来る。
  
-# 文字コードを UTF8 で扱うならこれを忘れずに +# 文字コードを UTF8 で扱うならこれを忘れずに 
-$dbh->do( 'SET NAMES UTF8);+$dbh->do("SET NAMES UTF8");
 </sxh> </sxh>
  
行 74: 行 74:
 ここではデータを配列で取得するサンプルを紹介する。このやり方では SELECT したフィールド名の順番で配列に入ってくる。そのため何番目の添字にどのフィールドが入っているか自分で把握しておく必要がある。また、将来的にフィールドの追加等の変更があった場合、その都度添字を修正していく必要がある。 ここではデータを配列で取得するサンプルを紹介する。このやり方では SELECT したフィールド名の順番で配列に入ってくる。そのため何番目の添字にどのフィールドが入っているか自分で把握しておく必要がある。また、将来的にフィールドの追加等の変更があった場合、その都度添字を修正していく必要がある。
  
-<sxh perl; gutter: false;+<sxh perl> 
-# test_table から id が 10 以上のデータを取ってくる +# test_tableからidが10以上のデータを取ってくる 
-my $sth = ''+my $sth = ""
-$sth = $dbh->prepare( "SELECT `name`,`mail`,`id` FROM $table WHERE `id` >= 10" );+$sth = $dbh->prepare("SELECT `name`,`mail`,`id` FROM $table WHERE `id`>=10");
 $sth->execute; $sth->execute;
 print "Error: $DBI::err $DBI::errstr\n" if $DBI::err; print "Error: $DBI::err $DBI::errstr\n" if $DBI::err;
行 84: 行 84:
 my @tmp  = (); my @tmp  = ();
 my @data = (); my @data = ();
-while ( @tmp = $sth->fetchrow_array ) { +while (@tmp = $sth->fetchrow_array) { 
- push @data, [ @tmp ];+  push @data, [ @tmp ];
 } }
    
行 91: 行 91:
  
 # 取得したデータを出力 # 取得したデータを出力
-foreach ( @data ) { +foreach (@data) { 
- utf8::decode( $_->[0] ); +  utf8::decode($_->[0]); 
- print $_->[0], "\n";+  print $_->[0], "\n";
 } }
 </sxh> </sxh>
行 99: 行 99:
 ===== データの取得方法(連想配列編) ===== ===== データの取得方法(連想配列編) =====
  
-ここではデータを連想配列で取得するサンプルを紹介する。このやり方では SELECT したフィールド名をキーとした連想配列でデータを取得できる。そのため配列の時のように何番目の添字にどのフィールドが入っているか等を把握しておく必要がなく、将来的にフィールドの追加等の変更があった場合も臨機応変に対応出来るので個人的にはこちらがオススメ。+ここではデータを連想配列で取得するサンプルを紹介する。\\  
 +このやり方ではSELECTしたフィールド名をキーとした連想配列でデータを取得できる。\\  
 +そのため配列の時のように何番目の添字にどのフィールドが入っているか等を把握しておく必要がなく、\\  
 +将来的にフィールドの追加等の変更があった場合も臨機応変に対応出来るので個人的にはこちらがオススメ。
  
-<sxh perl; gutter: false;+<sxh perl> 
-# test_table から id が 10 以上のデータを取ってくる+# test_tableからidが10以上のデータを取ってくる
 my $sth = ''; my $sth = '';
-$sth = $dbh->prepare( "SELECT `name`,`mail`,`id` FROM $table WHERE `id` >= 10" );+$sth = $dbh->prepare("SELECT `name`,`mail`,`id` FROM $table WHERE `id`>=10");
 $sth->execute; $sth->execute;
 print "Error: $DBI::err $DBI::errstr\n" if $DBI::err; print "Error: $DBI::err $DBI::errstr\n" if $DBI::err;
  
 my @data = (); my @data = ();
-while ( my $ref = $sth->fetchrow_hashref ) { +while (my $ref = $sth->fetchrow_hashref) { 
- push @data, $ref;+  push @data, $ref;
 } }
  
 $sth->finish if $sth; $sth->finish if $sth;
  
-foreach ( @data ) { +foreach (@data) { 
- utf8::decode( $_->{'name'} ); +  utf8::decode($_->{"name"}); 
- print $_->{'name'}, "\n";+  print $_->{"name"}, "\n";
 } }
 </sxh> </sxh>
  
perl/modules/dbdmysql.1529890849.txt.gz · 最終更新: 2018/06/25 10:40 by 127.0.0.1