gpt4 book ai didi

mysql - 在 perl 中关联 2 个表值

转载 作者:行者123 更新时间:2023-11-29 05:44:25 26 4
gpt4 key购买 nike

我在 mysql 数据库中有 2 个表:CUSTOMER 和 GROUP

客户表:

  NAME |PHONE
A |222
B |333
C |777
D |888
E |111
F |555

等等。

GROUP 表只有 3 个值:

  GN   | NUM
NEW |807
OLD |455
INT |504

我想得到以下结果:

  A, NEW, 807
B, OLD, 455
C, INT, 504
D, NEW, 807
E, OLD, 455
F, INT, 504

等等..

GROUP 表必须重复,直到 CUSTOMER 表结束。

这是我的代码:

#!/usr/bin/perl

# PERL MODULES
use DBI;
use strict;
use warnings;


# MYSQL CONFIG VARIABLES
my $dsn = 'DBI:mysql:test:127.0.0.1';
my $tablename = "CUSTOMER";
my $user = "root";
my $pw = "xxxx";
# DEFINE A MySQL QUERY
my $myquery1 = "SELECT NAME FROM $tablename";

# PERL CONNECT()
my $dbh = DBI->connect($dsn, $user, $pw);
# EXECUTE THE QUERY
my $getname = $dbh->prepare($myquery1);
$getnum->execute();

my $getlogin = $dbh->prepare("select * from GROUP");
$getlogin->execute();
my($login, $password);
# FETCHROW ARRAY
while (my $name = $getname->fetchrow_array()) {

while (my @row = $getlogin->fetchrow_array()) {
my ($gn,$num) = @row;
$login=$gn;
$password=$num;

print "$name\t\t $login \t\t $password \n";

}


}

当我执行我的代码时,我得到:

  A NEW 807
B OLD 455
C INT 504

DBD::mysql::st fetchrow_array failed: fetch() without execute() at ./main.pl line 29.

我该怎么做?任何帮助,将不胜感激。

最佳答案

首先,您有一个错字——您正在执行 $getnum->execute() 而不是 $getname->execute()。你真的运行了你粘贴的代码吗?

您在第三次迭代后遇到错误,因为 GROUP 表中只有三行数据。您需要使用新查询再次启动循环(在第一个 while 循环内执行 execute(),就在开始第二个循环之前),或者将其所有数据缓存到一个数组中,您可以反复循环:

my $getname = $dbh->prepare($myquery1); 
my $getlogin = $dbh->prepare("select * from GROUP");

# FETCHROW ARRAY
$getname->execute();
while (my $name = $getname->fetchrow_array())
{
$getlogin->execute();
while (my @row = $getlogin->fetchrow_array())
{
my ($gn,$num) = @row;
my $login=$gn;
my $password=$num;

print "$name\t\t $login \t\t $password \n";
}
}

关于mysql - 在 perl 中关联 2 个表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com