J'ai un hachage et j'essaie d'insérer ses valeurs dans la base de données. Hash est défini comme suit:Comment puis-je insérer des valeurs de hachage dans des colonnes avec DBI de Perl?
my %hash = (
1 => 'First Word',
2 => 'Second Word is correct',
0 => 'Third word does not exist',
);
Je ne sais pas comment insérer des valeurs dans une base de données à l'aide hash. Je remarque que ma question est similaire à this question. Mais, aucune des réponses ne semble être correcte. Lors de l'utilisation de l'une des réponses listées, les valeurs dans hash ne sont pas insérées, à la place, la référence à hash est insérée, c'est-à-dire ARRAY(0x9e63b30)
. Mais quand je print Dumper @values
, les valeurs sont imprimées et non les valeurs de référence.
Des suggestions pour insérer des valeurs et non leur référence? Et, qu'est-ce qui ne va pas dans les solutions énumérées dans les réponses à question.
@values est défini identique à this question ie
my @values = values %hash;
Edit: Structure Db:
T1:
sid sentence
1 First Word
2 Second Word is correct
0 Third word does not exist
dans sid ci-dessus est keys
de hachage et de phrase est values
de hachage.
ce que j'ai essayé (il est l'une des réponses à question):
my @keys = keys %hash;
my @values = values %hash;
my $sth = $dbh->prepare("INSERT INTO T1(sid, sentence) VALUES (?,?);");
$sth->execute_array({},\@keys, \@values);
à nouveau, lors de l'insertion @values
valeurs de référence sont insérés se.
EDIT:
_ SORTIE _
$VAR1 = 'First Word';
$VAR2 = 'Third word does not exist';
$VAR3 = 'Second Word is correct';
_ CODE _ voici comment j'insérer des valeurs en% hachage
my $x=0;
foreach my $file(@files){
if ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6 $7");
}
elsif ($file =~ /regex/){
push(@{$hash{$x}}, "$1 $2 $3 $4 $5 $6");
}
elseif ($file =~ /Hs_(.+)_(.+)_(.+)_(.+)_(.+)_W.+txt/){
push (@{$hash{$x}}, "$1 $2 $3 $4 $5");
}
$x++;
}
Toutes les réponses à cette question sont corrects othe. Avez-vous vraiment besoin d'aide pour mettre à jour une base de données ou avez-vous besoin d'aide pour travailler avec les structures de données standard Perl? – innaM
@Manni: Si les réponses sont correctes, pourquoi les valeurs de référence sont-elles téléchargées dans db au lieu des valeurs réelles? – birdy
Montrez-nous du code: au moins l'instruction sql et l'instruction execute. Et ensuite parlez-nous de votre base de données. Nous avons maintenant une idée de la façon dont vous voulez que ces valeurs se retrouvent dans votre base de données. Est-ce que les clés désignent des lignes, des colonnes ou aucun des deux? – innaM