我正在尝试使用 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)] });