Dali: Perl / Mysql - SQL Abfragen optimieren

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

  1. 你好 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.

    再见,
     克里斯蒂安

    --
    Bauer sucht Frau! | Ich bin ja eigentlich kein Serien-Junkie…
    Wenn auf Erden alle das Schoene als schoen erkennen, so ist dadurch schon das Haessliche bestimmt.
    http://wwwtech.de/
    1. Hi,

      Danke -  my $db_uid = $sth->{mysql_insertid}; - das funktioniert.

      ciao,
      Dali