2016-12-30 9 views
-3

私はperlの下で働いています。私はダイナミックなクエリを実装しています。あなたが私の検索中に助言を与えることができたら、私はこのものに問題があります。今perl selectrow_arrayでデータベースから情報を取得

、私の静的なクエリ:

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

$VAR1 = '1611029546'; 

だから私のような動的なクエリでそれを変換したいと思います:

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

print Dumper($envoi_numfact); 

私はいい結果を持っています$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'は配列を返し、配列参照は返しません。 'my @envoi_numfact = ...'または 'my($ 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によって平らにされるリストコンストラクタです。それらが存在するかどうかは関係ありません。あなたはそれの周りに10ペアの括約書をラップすることができ、何も変わることはありません。あなたがした何か他のものでなければなりません。おそらく、あなたのハッシュの中の値を変更したでしょう。私はあなたがそれを働かせることができてうれしいですが、それらの括弧はそれを修正するものではありません。 ;) – simbabque

+0

さまざまな答えをありがとう! – Ale

+2

'($ hash_infos {ope_ref})'は '(2)+ 2'が' 2 + 2'と同じように '$ hash_infos {ope_ref}'と同じです。 – ikegami

関連する問題