2016-02-25 40 views
9

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.

+0

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

+0

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

+0

Puoi provare a usare le virgolette singole ''' invece. Non sono sicuro che potrebbe davvero fare la differenza, ma è la prima cosa che proverei. – phaberest

risposta

0

Si scopre che era come avrei fatto l'accesso al mio file inclusi che contenevano le variabili.. Stavo impostando variabili che avevano valori diversi in file inclusi separati

-2

Prova questo:

$db_user = "john_doe"; 
$db_name = "john_doedata"; 
$db_password = "johndoespassword"; 

$conn = new mysqli('example.com', $db_user, $db_password , $db_name); 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

O semplicemente usare "e non':. D

Pace