【问题标题】:How to compare array from file with sql database query? [duplicate]如何将文件中的数组与sql数据库查询进行比较? [复制]
【发布时间】:2013-05-16 00:29:20
【问题描述】:

我试图从我的数据库表中选择与文件中数组中的行相同的所有列。例如:

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 />";
      }

     }

但它只写了 select hmmm 的最后一行...

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 

【问题讨论】:

    标签: database perl file select compare


    【解决方案1】:

    从输入文件读取后,您似乎忘记了chomp $line。换行符不在文件的最后一行,这就是它起作用的原因。

    【讨论】:

    • 非常感谢,我忘记了
    • 请问如何只选择一行???它也可以是随机行???我尝试了 ORDER BY RANDOM() LIMIT 1 但没有任何改变
    • rowid = (abs(random()) % (select max(rowid)+1 from recepty))
    • 不,这不好,因为它有时会选择不止一行 hmmmm 你有更好的解决方案吗?或者我必须问一个问题?
    • @TomasKocian:是的,最好提出一个新问题,因为它似乎与原始问题无关。
    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多