2016-12-30 130 views
-3

我正在perl下工作。我正在实现一个动态查询,并且我遇到了这个问题,如果你在我的搜索过程中可以给我一条建议。perl从selectrow_array获取数据库信息

现在,我的静态查询:

my $envoi_numfact = $dbh->selectrow_array("SELECT envoi_numfact FROM user.envoi where envoi_reference='hapiness'"); 

print Dumper($envoi_numfact); 

我有一个好结果:

$VAR1 = '1611029546'; 

所以我想在动态查询改造它,如:

my $envoi_numfact = $dbh->selectrow_array("SELECT envoi_numfact FROM user.envoi where envoi_reference=?",undef,$hash_infos{ope_ref} ); 

其中$hash_infos{ope_ref}代表envoi_reference

其结果是,我有:

$VAR1 = undef; 

任何couls帮助我吗?

+2

是什么在'$ {hash_infos} ope_ref'? – melpomene

+0

你的查询是正确的,你的Perl语法是正确的。如果没有结果,那是因为查询不返回任何结果。这可能意味着'$ hash_infos {ope_ref}'变量中的数据不对应于数据库中的一行。 – simbabque

+0

'selectrow_array'返回一个数组,而不是数组引用。所以写'我的@envoi_numfact = ...'或'我的($ envoy_numfact)= ...'。 – PerlDuck

回答

-5

我是赢家!我刚刚忘记了右括号。

my $envoi_numfact = $dbh->selectrow_array("SELECT envoi_numfact FROM user.envoi where envoi_reference=?",undef,$hash_infos{ope_ref} ); 

成为

 my $envoi_numfact = $dbh->selectrow_array("SELECT envoi_numfact FROM user.envoi where envoi_reference = ?",undef,($hash_infos{ope_ref})); 
+4

不,你改变了什么?你只需在'$ hash_infos {ope_ref}'中放置圆括号?这是一个列表构造函数,被Perl弄平了。这些没有关系。你可以在它周围包裹十对parens,没有什么会改变。它必须是你做的其他事情。可能你改变了你的散列值。我为你感到高兴,你已经开始工作了,但那些人不是固定它的。 ;) – simbabque

+0

感谢您的不同答案! – Ale

+2

'($ hash_infos {ope_ref})'在这种情况下与'$ hash_infos {ope_ref}'相同,就像'(2)+ 2'与'2 + 2'一样。 – ikegami