2013-05-21 66 views
0

我試圖從我的表中選擇數據庫中的所有列,與文件中數組中的行相同。例如:如何比較文件與數據庫查詢數組?

TABLE: 
id name 
1 A 
2 B 
3 C 

FILE: 
A 
B 

我只想選擇A和B.

我來源:

use DBI; 
use CGI;  
my $file = '.\input.txt';  # Name the file 
    open(FILE, $file) or die("Unable to open file"); 
    my @data = <FILE>; 
    foreach my $line (@data) 
    { 
     #print $line; 
     my $sth = $dbh->prepare("SELECT columnA FROM table WHERE columnA LIKE '%$line%'"); 
     $sth->execute; 
     my $result = $sth->fetchall_arrayref; 


     foreach my $row (@$result) { 
     print "- "; 
     print "@$row\n"; 
     print "<BR />"; 
     } 

    } 

,但只寫的選擇嗯最後一行...

OUTPUT I GET 

B 

OUTPUT I WANT TO GET 

A 
B 

我試過這個:

INPUT: 
bengalske_stehno 
cesnakova_polievka 
drzkova_polievka 
kuraci_spiz 
polievka_fazulova 
polievka_mrkvova 
polievka_rybacia 

DATABASE: 
fasirky 
cesnakova_polievka 
chlebicek_biskupsky 
drzkova_polievka 
polievka_fazulova 
polievka_mrkvova 
polievka_rybacia 
bengalske_stehno 

OUTPUT: 
- polievka_rybacia 

回答

2

從輸入文件中讀取後,您似乎忘了chomp $line。換行符不在文件的最後一行,這就是它工作的原因。

+0

非常感謝你這是我忘了 –

+0

+1尼斯扣除。 – TLP

+0

我可以問你如何選擇只有一行?它也可以是隨機排?我嘗試了ORDER BY RANDOM()LIMIT 1,但它沒有任何變化 –