如何将多个列名传递给 Perl Dancer 的 quick_select 方法?



我正在尝试使用 Perl Dancerquick_select快速从数据库中获取行。我正在使用来自用户的项目列表,如下所示:my @arr=split(/,/, $inline);

使用用户的项目时,我不断收到此错误:

DBD::mysql::db selectall_arrayref failed: Unknown column 'val2' in 'where clause'

这不起作用:

my @rows = $connect->quick_select('table', { column => @arr});

但这确实有效:

my @rows = $connect->quick_select('table', { column => ['val1', 'val2']});`

显然[]表示一个列表,但 Perl 中的数组@arr?所以我尝试将其转换为列表,但这也不起作用:

my @rows = $connect->quick_select('table', { column => @arr[0..$#arr]});

表和列名称已更改以保护数据。如何解决此问题quick_select以便使用来自用户的动态数据?

显然[]表示一个列表,但 Perl 中的数组@arr?所以我尝试将其转换为列表,但这也不起作用。

这是不正确的。[]表示 Perl 中的数组引用。数组是按数字索引的标量的有序列表,数组引用是"指向"数组的标量。

你可以从$input中获取数组,使用@array语法引用它,并以这种方式发送它:

my @rows = $connect->quick_select('table', { column => @arr});

您可以通过强制调用split到内联数组引用中来更进一步(可能需要一些清晰度成本(:

my @rows = $connect->quick_select('table', { column => [split(/,/, $inline)] });

最新更新