我正在运行查询'describe table',它为'default'列返回'null'的值.但是,当我尝试将数据库中的值打印到HTML表时,它不会打印'null'.它总是空白的.
这就是我存储数据库中数据的方式:
@nulls = ();
while (($null) = $sth1->fetchrow_array)
{
push (@nulls, $null);
}
Run Code Online (Sandbox Code Playgroud)
当我打印数组的内容时,@nulls它永远不会打印'null'的文字值.它总是空白的.有办法克服这个问题吗?
dao*_*oad 13
正如Chris J所说,空值作为未定义的值返回.
如果启用了警告,则在打印值时会收到"打印时未定义的值"警告.使用strict和warningspragmata可以节省大量的调试时间.该diagnostics编译指示为标准警告和致命错误添加了额外的解释性文本.
它们很容易捕获并替换来自数据库的NULL值:
use strict;
use warnings;
my @nulls = ();
while ((my $null) = $sth1->fetchrow_array)
{
# before perl 5.10: use the ternary operator.
push @nulls, defined $null ? $null : 'NULL';
# perl 5.10 adds the defined-or operator: //
push @nulls, $null // 'NULL';
}
Run Code Online (Sandbox Code Playgroud)
或者您可以@nulls像上面显示的那样构建数组,然后在显示时更改空值.
my @pre_5_10 = map { defined $_ ? $_ : 'NULL' } @nulls;
my @perl_5_10 = map { $_ // 'NULL' } @nulls;
Run Code Online (Sandbox Code Playgroud)