Perl / Mysql - SQL Abfragen optimieren
Dali
- perl
0 Christian Kruse0 Dali
Hi zusammen,
ich hab hier ein kleinen Codeabschnitt der funktioniert.
my $sql = qq{INSERT INTO x (email,pw) VALUES (?,?)};
my $sth = $main::dbh->prepare ($sql) || die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
$sth->execute($par_email,$par_pw) || die "Kann Abfrage nicht ausfuehren: $DBI::errstr\n";
$sql = qq{SELECT uid FROM x WHERE email=?};
$sth = $main::dbh->prepare ($sql) || die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
$sth->execute($email) || die "Kann Abfrage nicht ausfuehren: $DBI::errstr\n";
my @result = $sth->fetchrow_array;
my $uid=$result[0];
$sql = qq{INSERT INTO y (catname,uid) VALUES (?,?)};
$sth = $main::dbh->prepare ($sql) || die "Kann Statement nicht vorbereiten: $DBI::errstr\n";
$sth->execute("default",$uid) || die "Kann Abfrage nicht ausfuehren: $DBI::errstr\n";
$sth->finish;
Aber das kann man doch bestimmt optimieren. Im speziellen meine ich, ob man nicht irgendwie die verschiedene SQL Statements zusammenfassen kann oder irgendwelche Schritte vereinfachen.
Danke für Tipps.
bye,
Dali
你好 Dali,
Aber das kann man doch bestimmt optimieren. Im speziellen meine ich, ob man nicht irgendwie die verschiedene SQL Statements zusammenfassen kann oder irgendwelche Schritte vereinfachen.
$dbh->{'mysql_insertid'}
als äquivalent zu mysql_insert_id()
existiert.
Heisst: du musst die ID nach dem INSERT
nicht abfragen, sondern kannst sie aus dem Datenbank-Treiber wie oben angegeben auslesen.
再见,
克里斯蒂安
Hi,
Danke - my $db_uid = $sth->{mysql_insertid}; - das funktioniert.
ciao,
Dali