Se ho un codice PHP,PHP e MYSQL Nome utente con sottolineatura
$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);
}
Quando provo a fare una query, ottengo
Connessione non riuscita: Accesso negato per l'utente 'John' @ 'example.com' (utilizzando la password: NO)
Il problema è ovvio. PHP sta solo passando la parte del nome utente prima del carattere di sottolineatura.
Come posso risolvere/aggirare questo?
Non ho il controllo sul nome utente, quindi "ottenere un nuovo nome utente" non funzionerà.
Il using password : NO
implica che sto usando la password sbagliata, ma in realtà quella è la password errata per l'utente john
ed è la password corretta per l'utente john_doe
.
hai provato a sfuggire alla sottolineatura come john \\ _ doe. Ricordo che è un problema di sottolineatura delle vecchie versioni di mysql b Non siamo completamente sicuri della soluzione. – smozgur
Puoi provare a vedere se hai lo stesso problema con PDO? Ho avuto '_' nel nome utente ed è stato in grado di connettersi al DB senza alcun problema. Io per lo più uso comunque PDO. – Maximus2012
Puoi provare a usare le virgolette singole ''' invece. Non sono sicuro che potrebbe davvero fare la differenza, ma è la prima cosa che proverei. – phaberest