Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich Sonderzeichen in einer PDO-Verbindungszeichenfolge maskieren?

Wenn Sie dies aus irgendeinem seltsamen Grund tun müssen, verwenden Sie nicht den dbname Parameter in der dns. Verwenden Sie stattdessen Ihren Datenbanktreiber, um ihn für Sie auszuwählen:

$dbh->query('use "newdatabase"'); // for mysql.

Auf diese Weise haben Sie die Möglichkeit, den Datenbanknamen mit " einzuschließen , sodass Sie es wie auch immer der Treiber benennen kann zulässt . Für MySQL ist dies für dieses spezifische Szenario der " Zeichen, aber das bedeutet nicht, dass es sich bei PostgreSQL oder Firebase unterscheidet.

Aber diese Methode ist nicht kugelsicher, sie erlaubt der PDO-Bibliothek nur, den DSN so normal zu parsen, wie ich nicht erwartet habe die PDO-Bibliothek, um mit dieser ungewöhnlichen Situation fertig zu werden, da ihr einziger Zweck darin besteht, mit so vielen Treibern wie möglich zu interagieren.

Treiberspezifische Freigaben sollten nicht an PDO teilnehmen, also sollten Sie den Treiber wirklich danach fragen, auf diese Weise können Sie auch überprüfen, ob die Abfrage nicht ausgeführt wird.