我正在运行查询“描述表”,并且它为“默认”列返回值“空”。但是,当我尝试将值从数据库打印到HTML表时,它不是打印“null”。它总是空白。

这就是我从数据库存储数据的方式:

@nulls = ();

while (($null) = $sth1->fetchrow_array)
    {
    push (@nulls, $null);
    }

当我打印@nulls数组的内容时,它从不打印'null'的字面值。它总是空白。有办法解决这个问题吗?

最佳答案

正如Chris J所说,空值将作为未定义值返回。

如果启用了警告,则在打印值时会收到“打印中未定义的值”警告。使用strictwarnings编译指示可以节省大量调试时间。 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;

08-26 18:57