Checking for entry in table?
KEVIN ZEMBOWER <[email protected]>
| Newsgroups | gmane.comp.db.mysql.perl |
|---|---|
| Message-ID | <[email protected]> |
I'm still trying to check whether a record exist in a table, and act accordingly. While I appreciate Garry's suggestion, I want to understand it fully, and I'm stuck.
My program has this loop in it:
my $kwsth = $dbh->prepare("SELECT keywordid FROM keywords WHERE TRIM(keyword)=?");
while (<>) { #While there's more lines in the file called on the command line, of POPLINE document numbers and keywords
$ln++;
my ($popno, $kws) = split("\t"); #split on the tab following the POPLINE number
chomp($kws);
print "$popno:\n" if $debug;
my (@keywords) = split('\|', $kws); #split on the pipe symbol that separates keywords
foreach (@keywords) {
$_ = uc($_);
print "\t$_ " if $debug;
my $kwsthrv = $kwsth->execute($_) or warn "Problem with execute: $DBI::errstr\n";
if (! $kwsthrv) { print "Keyword $_ not found\n" } else {
my $keywordid = $kwsth->fetchrow_array or warn "Problem with fetch: $DBI::errstr\n";
print "Keyword ID: $keywordid\n" if $debug;
}
} #foreach keyword in the array of keywords
} #while there are more lines of input on the command line
The datafile looks like this:
kevinz@www:~/public_html/orderDB/scripts$ cat ../tmp/w
051877 Primary Health Care|Family Planning|Dummy
kevinz@www:~/public_html/orderDB/scripts$
The output looks like this:
kevinz@www:~/public_html/orderDB/scripts$ ./loadPOPkeywords.pl ../tmp/w
051877:
PRIMARY HEALTH CARE Keyword ID: 1791
FAMILY PLANNING Keyword ID: 743
Use of uninitialized value in concatenation (.) or string at ./loadPOPkeywords.pl line 35, <> line 1.
Problem with fetch:
Use of uninitialized value in concatenation (.) or string at ./loadPOPkeywords.pl line 36, <> line 1.
DUMMY Keyword ID:
kevinz@www:~/public_html/orderDB/scripts$
I want to detect, at either the execute or fetch phase, whether or not the record exists, and then either add it and get the mysql_insertid, or just fetch the id of the already inserted record. I don't want the errors that show up, or the warn() execution.
Thanks for your help and suggestions.
-Kevin Zembower
--
MySQL Perl Mailing List
For list archives: http://lists.mysql.com/perl
To unsubscribe: http://lists.mysql.com/[email protected]