dbi取数问题

dbi取数问题

dbi取数问题
我想从数据库中取一条记录,但此条记录中含有空字段,程序输出时就会提示Use of uninitialized value in print at C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\dir92.tmp\dbiex5-1.pl line 18.
如何能够避免提示此条信息
我的printerror设置为0,当仍然有此提示
而且我想输出取出的数据,如用
while(shift @array) {
print "$_\n";
}
就会数据输出不全,因为数据中有undef
如何解决?
while( shift @array ) while( shift @array )

while(只要是真) {执行} 你的这个还好有用 shift ,否则就是个死循环。
另外 shift @array 是从数组中拿出第一个元素。
你想要的是 for(@array)

另外, 你从那里学来的东西? 乱七八糟。 还是拿本 perl 的书把基本东西学学吧。 看看下面的这两个链接,里面有不少资料。

http://wiki.perlchina.org/main/show/Perl简介
http://wiki.perlchina.org/main/show/Perl学习指南
Use of uninitialized val.
Use of uninitialized value in print at C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\dir92.tmp\dbiex5-1.pl line 18.

提问题的话,请把程序中出问题的大致几行贴出来。

我猜如果你 while ( @row = $sth->fetchrow_array ) 完后,操作 @row 里东西时没有检测是否 数组里有空值就直接操作了。

另外, 我们中文化项目已翻译的一篇文章里有个非常好的程序调试文章, 仔细看看, 对你会很有帮助的。
http://wiki.perlchina.org/main/show/brian's%20Guide%20to%20Solving%20Any%20Perl%20Problem
1、如何检查数组是否为空??(当然引用也是如此)
$array_ref=$sth->fetchrow_arrayref();
我用这句话为什么不行?
if(defined($$array_ref[$j])){
print $_;
}else{
print "null";
}
2、找到原因了。因为数据库中有空值,而且我也打开了warnings,所以就提示上述信息了。
谢谢qiang。




   

我一般检查数组为空就直接.
我一般检查数组为空就直接if(@hehe)这么干的:)
对不起,可能是我表达有问.
对不起,可能是我表达有问题
我的意思是,检查数组中某一个值是否为undef应如何操作,我写的语句为什么不行???哪里有问题??请指教
foreach my $v (@row) {<b.
foreach my $v (@row) {
if (defined $v) {
print 'v is defined\n";
# do something
} else {
print "v is undefined\n";
}
}

还是那句,拿本 perl 的书把基本东西学学.




   

[quote]回复给 qiang : fo.
找到问题所在。