會員登入 新朋友?立刻註冊
[說明]
文章會慢慢移新精讚 //n.sfs.tw
2019/2/23 星期六     [文章分類及列表]
精讚Blog logo 部落格是自己寫爽的
精讚部落 > 後端程設 > Perl 程式
DBI.pm 之bind_columns直接繫結欄位到陣列物件 無次要群組 列印 推薦
作者或來源 瘦河馬 2013-08-08 14:55:08
關鍵字 1bind_columns 2dbi 3dbd 4perl
此文完整連結 http://n.zipko.info/850.html
文章歡迎轉載,請尊重版權註明連結來源。

原本PERL在使用dbi函數庫時,函數bind_columns我都這樣寫直接繫結到變數,請看14行:

#!/usr/bin/perl -w
use DBI;
use constant DB_IP  => "163.17.38.84";
use constant DB_NAME => "...";
use constant DB_USER => "...";
use constant DB_PWSSWD => "...";

my $dbh = DBI->connect("DBI:mysql:dbname=". DB_NAME . ";host=". DB_IP, DB_USER, DB_PWSSWD) or 
  die "Cannot connect to ". DB_IP . ": $!\n";

$sth = $dbh->prepare( "select * from RR ");
$sth->execute;
my( $col1, $col2, $col3, ... );
$sth->bind_columns(undef, \$col1, \$col2, \$col3, 有幾欄就加幾個變數,如果和欄位數不一致,就會出現警告);
while($sth->fetch()){
  print $col1, $col2, $col3 ...;
  print "\n";
}

但是在資料庫select時,有時要select的資料欄位很多,一項項指定會很煩,能不能有繫結到陣列的方法,後來發現 Daniel Lewart(lewart@uiuc.edu)有寫一個更新的方法直接繫結到陣列物件.這樣方便太多了

#!/usr/bin/perl -w
use DBI;
use constant DB_IP  => "163.17.38.84";
use constant DB_NAME => "...";
use constant DB_USER => "...";
use constant DB_PWSSWD => "...";

my $dbh = DBI->connect("DBI:mysql:dbname=". DB_NAME . ";host=". DB_IP, DB_USER, DB_PWSSWD) or 
  die "Cannot connect to ". DB_IP . ": $!\n";

$sth = $dbh->prepare( "select * from RR ");
$sth->execute;
my( @cols )= ( @{$sth->{NAME}}) ;
$sth->bind_columns(\( @cols));
while($sth->fetch()){
  print @cols;
  print "\n";
}

感謝Daniel Lewart[1] 提供的方法,老實說,真看不懂他的寫法,有點像天書,不過能用…這就是所謂知其然不知其所以然 > <

參考資料

perl http://www.nntp.perl.org/group/perl.dbi.dev/2005/05/msg4103.html

 

 

END
F B 留 言 版

留言結束請重新整理網頁顯示留言
相 關 文 章
同 群 組 其 他 文 章
隨 機 文 章
精讚部落版權所有(c) JinZan Blog http://n.zipko.info Author axer@tc.edu.tw. 最佳瀏器為Firefox,本網頁不支援IE6。[文章分類及列表]
本站最佳瀏覽解析度1024x768 網站建置 2009.11