Habe einige Zeit damit verbracht, ein Problem zu lösen, bei dem eine PHP/MySQL-Webanwendung Probleme hatte, sich mit der Datenbank zu verbinden. Auf die Datenbank kann von der Shell und von phpMyAdmin mit genau denselben Zugangsdaten zugegriffen werden, und es ergab keinen Sinn.
Stellt sich heraus, das Passwort in eine $ -Zeichen hatte:
$_DB["password"] = "mypas$word";
Das Passwort „mypas“ war gesendet werden, die offensichtlich falsch ist.
Was ist der beste Weg, um mit diesem Problem umzugehen? Ich entkam der $ mit einem \
$_DB["password"] = "mypas\$word";
und es funktionierte.
Normalerweise verwende ich $string = 'test'
für Strings, was wahrscheinlich ist, wie ich es vermieden habe, davor zu laufen.
Ist das korrektes Verhalten? Was wäre, wenn dieses Passwort in einer Datenbank gespeichert wäre und PHP es herausgezogen hätte - würde das gleiche Problem auftreten? Was bin ich hier ...
Danke für Ihre Antwort. Es scheint, dass dies ein Problem der Best Practice ist. Mit strikter Fehlerberichterstattung könnte dies schneller aufgenommen worden sein. Von meiner ursprünglichen Frage - könnte dies ein Problem sein, wenn Passwörter aus der Datenbank abgerufen werden, oder wird PHP das $ -Zeichen umgehen? – ncatnow
@ncatnow: Es kann kein Problem sein, da die Ersetzungen nur in doppelt zitierten Strings ("string") durchgeführt werden. Wenn Sie eine Zeichenfolge aus der Datenbank lesen, wird sie intern von PHP gelesen, so dass Sie nicht die doppelt zitierten Strings verwenden, um sie zu setzen (oder sogar die einfachen Anführungszeichen). Stellen Sie sich vor, der Compiler würde alle $ stuff ** ersetzen, bevor Sie die Variable setzen. –
Es ist nur ein Problem für Zeichenfolgen, die direkt in Ihrem Quelltext geschrieben werden, indem doppelte Anführungszeichen verwendet werden. Sie müssen physikalisch "" wie $ this "' in einer '.php' Quelldatei erscheinen. Strings aus der Datenbank, aus einer Datei, aus dem Benutzer usw. werden nicht interpoliert. –