请教一个perl DBI模块问题

lty369963 2014-05-07 09:18:07
我要访问mysql数据库的一个单元,怎么做到?
DBI这个模块貌似这些方法:fetchrow_array fetchrow_arrayref都只能访问一行,不能访问指定的单元
比如我的sql语句是这样:SELECT NAME FROM benefit WHERE SUBJECT ='PRD' (NAME ,SUBJECT :列名,benefit :表名,)
像这种sql语句,我应该怎么在perl获取到相应的数据?
求大神解惑
...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Faith_X 2014-05-08
  • 打赏
  • 举报
回复
fetchrow_hashref试试 其实我觉得你说的fetchrow_array这种也可以取到。 楼主也可以尝试下用selectrow_array, selectrow_hashref试试
lty369963 2014-05-08
  • 打赏
  • 举报
回复
问题就出在“$sth->execute($subject_value);”这个上了
lty369963 2014-05-08
  • 打赏
  • 举报
回复
嗯,的确好用。
Faith_X 2014-05-08
  • 打赏
  • 举报
回复
引用 楼主 lty369963 的回复:
我要访问mysql数据库的一个单元,怎么做到? DBI这个模块貌似这些方法:fetchrow_array fetchrow_arrayref都只能访问一行,不能访问指定的单元 比如我的sql语句是这样:SELECT NAME FROM benefit WHERE SUBJECT ='PRD' (NAME ,SUBJECT :列名,benefit :表名,) 像这种sql语句,我应该怎么在perl获取到相应的数据? 求大神解惑
代码简单那演示: 链接数据库部分省略了 fetchrow_hashref:
my $sql_str = "SELECT `NAME` FROM `benefit` WHERE `SUBJECT` = ? ";
my $subject_value = "PRD";
my $sth = $dbh->prepare($sql_str);
$sth->execute($subject_value);
while (my $row = $sth->fetchrow_hashref){
         print $row->{'NAME'}."\n";
}
至于fetchall_arrayref与fetchall_hashref这2个也可以做到,LZ 自己去看下文档 http://search.cpan.org/~timb/DBI-1.631/DBI.pm 还有种方法应该可以 selectcol_arrayref
my $ary_ref = $dbh->selectcol_arrayref($sql_str, undef, $subject_value);
foreach (@$ary_ref){
         print $_."\n";
}
解析一下$ary_ref
Faith_X 2014-05-08
  • 打赏
  • 举报
回复
引用 2 楼 lty369963 的回复:
这些貌似只能取到一行,不能取某个单元格吧
可以啊,用fetchrow_hashref就可以。LZ 给个简单的例子。
lty369963 2014-05-08
  • 打赏
  • 举报
回复
这些貌似只能取到一行,不能取某个单元格吧

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧