我正在运行查询“描述表”,并且它为“默认”列返回值“空”。但是,当我尝试将值从数据库打印到HTML表时,它不是打印“null”。它总是空白。
这就是我从数据库存储数据的方式:
@nulls = ();
while (($null) = $sth1->fetchrow_array)
{
push (@nulls, $null);
}
当我打印
@nulls
数组的内容时,它从不打印'null'的字面值。它总是空白。有办法解决这个问题吗? 最佳答案
正如Chris J所说,空值将作为未定义值返回。
如果启用了警告,则在打印值时会收到“打印中未定义的值”警告。使用strict
和warnings
编译指示可以节省大量调试时间。 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';
}
或者,您可以按照上面显示的方式构建
@nulls
数组,然后在显示时更改null。my @pre_5_10 = map { defined $_ ? $_ : 'NULL' } @nulls;
my @perl_5_10 = map { $_ // 'NULL' } @nulls;