Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用perl将数据库的每一行保存为目录中的单独文本文件?_Mysql_Arrays_Database_Perl - Fatal编程技术网

Mysql 使用perl将数据库的每一行保存为目录中的单独文本文件?

Mysql 使用perl将数据库的每一行保存为目录中的单独文本文件?,mysql,arrays,database,perl,Mysql,Arrays,Database,Perl,我有一个数据库表,它保存着各种列和行数据 我想在其中一列中搜索关键字。该列称为“产品” 我想对表中的每个关键字运行查询,并返回包含该关键字的所有行的结果 每行的结果应打印到一个单独的文件中,每个文件都应将名称作为该行某列(在本例中为item_id)中包含的数据值 我希望在循环中完成此操作,直到在所有“products”列中搜索表中的所有行 我有下面的代码打印到屏幕上,但是所有匹配的行和列都会立即返回到屏幕上,而不是像我希望的那样单独归档(请阅读上面的(3)) 另外,请注意我想要的输出格式,即单独

我有一个数据库表,它保存着各种列和行数据

  • 我想在其中一列中搜索关键字。该列称为“产品”
  • 我想对表中的每个关键字运行查询,并返回包含该关键字的所有行的结果
  • 每行的结果应打印到一个单独的文件中,每个文件都应将名称作为该行某列(在本例中为item_id)中包含的数据值
  • 我希望在循环中完成此操作,直到在所有“products”列中搜索表中的所有行

    我有下面的代码打印到屏幕上,但是所有匹配的行和列都会立即返回到屏幕上,而不是像我希望的那样单独归档(请阅读上面的(3))

    另外,请注意我想要的输出格式,即单独的行e.t.c

    有人能帮忙吗

    #!/usr/bin/perl
    use DBI;
    @product = qw( orange apple);   ###an array created for products 
    $count = 1;
    
    # Connect to the database
    details not provided
    
      my $dbh = DBI->connect("DBI:mysql:$db;host=$db_host",$mysql_user, $mysql_passwd) 
      ||    die "ERROR: Connecting: $DBI::errstr\n";
    print "db connected\n";
    
    foreach $product(@product)
      {
    
        # Prepare the SQL query for execution
        my $sth = $dbh->prepare(<<End_SQL) 
    or die "Couldn't prepare statement: $DBI::errstr; stopped";
    SELECT item_id, published, modified, availability, summary, 
    product, reference FROM $my_table WHERE product LIKE '%$product%'
    End_SQL
    
          # Execute the query
          $sth->execute() or die "Couldn't execute statement: $DBI::errstr; stopped";
    
        # Fetch each row and print it
        while ( my ($item_id, $published, $modified, $availability, $summary, $product, 
    $reference) = $sth->fetchrow_array() )
          {
            print STDOUT ("ITEM ID: $item_id\n Product: $product\n Published: 
    $published Modified:$modified\n Availability: $availability\n Summary: $summary\n 
    Reference: $reference\n");};
    
    
        $count++;
    
      }
    # Disconnect from the database
    $dbh->disconnect();
    
    !/usr/bin/perl
    使用DBI;
    @product=qw(橙色苹果)####为产品创建的数组
    $count=1;
    #连接到数据库
    未提供详情
    my$dbh=DBI->connect(“DBI:mysql:$db;host=$db\u host”,$mysql\u user,$mysql\u passwd)
    ||die“错误:连接:$DBI::errstr\n”;
    打印“已连接数据库\n”;
    foreach$product(@product)
    {
    #准备要执行的SQL查询
    my$sth=$dbh->prepare(fetchrow\u array())
    {
    打印标准输出(“项目ID:$ITEM\u ID\n产品:$Product\n已发布:
    $published Modified:$Modified\n可用性:$Availability\n摘要:$Summary\n
    引用:$Reference\n“;};
    $count++;
    }
    #断开与数据库的连接
    $dbh->disconnect();
    
    您必须创建一个文件并写入该文件,而不是打印标准输出

    open(my$f,“>$item\u id”)或die“无法创建文件$item\u id:$!”!";
    打印$f“项目ID:$ITEM\u ID\n产品:$Product\n Published:$Published Modified:$Modified\n Availability:$Availability\n Summary:$Summary\n Reference:$Reference\n”;
    结束(f美元);
    
    您打印到的是
    标准输出,而不是文件。为什么要打印到文件?仅供参考,您应该使用
    或die
    ,而不是
    | die
    ,因为优先级不同。嗨,奥拉夫,谢谢您的回答-我知道我需要打印到文件,但不确定如何操作,我打印标准输出只是为了向您展示我目前为止的代码。谢谢你的建议很有效。我正在改进这个脚本,我的目标是为以特定格式返回的每一行发送电子邮件,而不是打印到文件,但我想了解脚本的进展阶段>先打印到文件:-)这意味着我在同一个项目上还有其他问题。谢谢Barmar的提示