Wenn ich die PHP-Code haben,PHP & MySQL-Benutzernamen mit Unterstreichungs
$db_user = "john_doe";
$db_name = "john_doedata";
$conn = new mysqli('example.com', $db_user, 'johndoespassword', $db_name);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
Wenn ich versuche, eine Abfrage zu tun, bekomme ich
Verbindung fehlgeschlagen: Zugriff verweigert für Benutzer 'john' @ 'example.com' (mit Passwort: NEIN)
Das Problem liegt auf der Hand. PHP übergibt nur den Teil des Benutzernamens vor dem Unterstrich.
Wie kann ich das beheben/umgehen?
Ich habe keine Kontrolle über den Benutzernamen, also "bekomme einen neuen Benutzernamen" wird nicht funktionieren.
Die using password : NO
bedeutet, dass ich das falsche Passwort benutze, aber das ist wirklich das falsche Passwort für den Benutzer john
und ist das korrekte Passwort für den Benutzer john_doe
.
hast du versucht, Unterstrich wie John \\ _ doe zu entkommen. Ich erinnere mich, es ist Unterstreichung Problem über die alten MySQL-Versionen b ut nicht ganz sicher über die Lösung. – smozgur
Können Sie versuchen zu sehen, wenn Sie das gleiche Problem mit PDO bekommen? Ich hatte '_' in Benutzername und es war in der Lage, eine Verbindung zur DB ohne irgendein Problem herzustellen. Ich benutze jedoch meistens PDO. – Maximus2012
Sie können stattdessen versuchen, einfache Anführungszeichen '' 'zu verwenden. Nicht sicher, dass es tatsächlich einen Unterschied machen würde, aber es ist das erste, was ich selbst versuchen würde. – phaberest