Tobias Weisserth: SQL Einbettung in Perl mittels DBI

Hallo Ihr fleissigen und klugen Helferlein,

Folgende Frage:

Dies ist ein Beispiel aus der Einweisung in DBI von CPAN:

my $sth = $dbh->prepare('SELECT * FROM people WHERE lastname = ?')

Jetzt die Frage:

Kann ich 'SELECT * FROM people WHERE lastname = ?' durch eine String Variable ersetzen? Ich möchte das SQL Statement nämlich zur Laufzeit zusammenbauen und dann irgendwo abspeichern und danach auslesen (in einer String Variablen z.B.)

my $sth = $dbh->prepare('$string') oder so ähnlich. Geht das? Gibt es da unter Umständen Probleme (Performance, Sicherheit etc.)?

Ein blutiger Anfänger dankt Euch für Euren Expertenrat,

Gruß,
Tobias Weisserth

  1. Hallo

    Kann ich 'SELECT * FROM people WHERE lastname = ?' durch eine String Variable ersetzen? Ich möchte das SQL Statement nämlich zur Laufzeit zusammenbauen und dann irgendwo abspeichern und danach auslesen (in einer String Variablen z.B.)

    Ja.

    my $sth = $dbh->prepare('$string') oder so ähnlich. Geht das? Gibt es da unter Umständen Probleme (Performance, Sicherheit etc.)?

    my $sth = $dbh->prepare($string);
    ist richtig, dann gehts. In Gänsefußchen würde es auch ersetzt werden, in einfachen Hochkommas (') wird aber keine Varieblaninterpolation vorgenommen, so dass $string als String stehen bleibt.

    Tschö Matti

    1. Danke!

      Gruß, Tobias

      Hallo

      Kann ich 'SELECT * FROM people WHERE lastname = ?' durch eine String Variable ersetzen? Ich möchte das SQL Statement nämlich zur Laufzeit zusammenbauen und dann irgendwo abspeichern und danach auslesen (in einer String Variablen z.B.)

      Ja.

      my $sth = $dbh->prepare('$string') oder so ähnlich. Geht das? Gibt es da unter Umständen Probleme (Performance, Sicherheit etc.)?

      my $sth = $dbh->prepare($string);
      ist richtig, dann gehts. In Gänsefußchen würde es auch ersetzt werden, in einfachen Hochkommas (') wird aber keine Varieblaninterpolation vorgenommen, so dass $string als String stehen bleibt.

      Tschö Matti