Kann ich die Funktion DBD :: mysql quote () ohne eine Datenbankverbindung verwenden? [Duplikat]

8

Ich schreibe eine .sql-Datei mit Perl und schreibe nicht direkt in die mysql-Datenbank. Ich muss die Strings in dieser Datei zitieren. Sieht so aus, als ob die $ dbh-quote () -Methode das macht, was ich will. Außer, dass ich nicht herausfinden kann, wie man es ohne eine Datenbankverbindung benutzt. Ich würde eine Dummy-Verbindung herstellen, aber ich kann das scheinbar nicht tun, ohne dass eine Datenbank läuft, und der Rechner, der diesen Cron-Job ausführen wird, wird keinen haben.

Diese Frage ist ähnlich: Perl DBI ohne Zugriff auf die Datenbank und die akzeptierte Antwort besagt, dass "Sie versuchen könnten, den Treiber zu laden, den Sie benötigen, und die Funktion direkt aufrufen", was ich gerne tun würde, aber ich kann nicht herausfinden, wie das geht.

    
Stephen Ostermiller 19.08.2012, 23:19
quelle

3 Antworten

0

Es klingt wie die Antwort ist ein klares "du kannst es nicht tun". In jedem Fall ist hier eine Zitat-Funktion, die ich gemäß der Mysql-Dokumentation Ссылка darüber, was zitiert werden soll.

Meine Eingabe ist UTF-8, Perl speichert Zeichenfolgen intern in UTF-8, meine Ausgabe ist UTF-8 und meine Datenbank ist UTF-8. Angesichts der Tatsache, dass der Zeichensatz konsistent ist, sollte ich mir nicht zu viele Gedanken darüber machen müssen, um den Zweck zu umgehen.

%Vor%

Ich habe diese Funktion getestet und es scheint zu tun, was ich will. Schade, so etwas ist nicht zugänglich von einer Bibliothek, wo es bereits geschrieben ist.

    
Stephen Ostermiller 20.08.2012, 13:48
quelle
4

Zuverlässiges Zitieren erfordert, dass der Treiber den Zeichensatz / die Sortierung der Verbindung versteht, da die Ausführung von Escapes aufgrund dieser Informationen variiert.

Dies ist der Grund, warum in PHP mysql_escape_string () durch mysql_real_escape_string () ersetzt wurde, das die Datenbankverbindungseigenschaften verwendet, um Eingabestrings korrekt zu entschlüsseln.

    
Justin Swanhart 20.08.2012 00:45
quelle
3

Klingt so, als müsste man herausfinden, was quote macht und selbst implementieren. Kein Zugang zu einer echten DB-Verbindung wird wahrscheinlich ein Show-Stopper sein.

    
Cody Caughlan 19.08.2012 23:28
quelle

Tags und Links