Thread Verwendung von Datenbanklinks in SELECT-Abfrage
(29 answers)
Opened by Hanna at 2009-09-23 15:00 Code: (dl
)
1 $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 $sth = $dbh->prepare('SELECT PRODUCT_ID FROM schema.products@dblink_to_testdb where id=?'); 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 Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|