Thread Verwendung von Datenbanklinks in SELECT-Abfrage (29 answers)
Opened by Hanna at 2009-09-23 15:00

sid burn
 2009-09-23 15:14
#126098 #126098
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Code: (dl )
1
2
$sth = $dbh->prepare('SELECT PRODUCT_ID FROM schema.products@dblink_to_testdb where (id=\'$partnr\')');
}


Der String ist in einem einzelnen Hochkomma -> 'string'. Und in einzelnen Hochkomma werden keine variablen interpoliert. Du schickst also genau das ab was da steht.

Und zweitens sollte man keine Variablen in SQL Strings interpolieren. Ohne vorheriges Escapen ist das falsch und führt ebenfalls zu Sicherheitsfehler. Sogenannte SQL Injections. Du solltest "Bind-Params" nutzen. Korrekt und sauber und ohne SQL Injections solltest du es so umschreiben.

Code: (dl )
1
2
$sth = $dbh->prepare('SELECT PRODUCT_ID FROM schema.products@dblink_to_testdb where id=?');
$sth->execute($partnr);


Ansonsten würde ich dir noch empfehlen beim Connect von DBI->connect() die Option "RaiseError => 1" zu übergeben, dann musst du nicht ständig
Code: (dl )
... or die $DBI::errstr
schreiben.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Verwendung von Datenbanklinks in SELECT-Abfrage