2016-12-30 189 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