Come prima cosa, salve a tutti, ecco il mio problema:

sto sviluppando un'applicazione web basata su php e db postgres nella quale ho anche implementato la gestione degli utenti memorizzazione credenziali, gestione del login, ecc ecc... tra le tante ho creato una pagina per la gestione del proprio account ( modifica dello user e della password ) e fin qui nessun problema la password riesco a cambiarla tranquillamente da una form php che poi farà le query adatte per cambiarla nel db, il problema salta fuori quando all'interno di una password piazzo degli spazi bianchi ad esempio "la mia password".

Le password all'interno del db sono memorizzate in una tabella chiamata credenziali che contiene tutte le credenziali ( nome utente e password ) di tutti gli utenti, ma oltre a questo ho creato anche dei Ruoli Utente dove ogni ruolo utente corrisponde ad un utente che avrà il nome che lo rappresenta e la password di accesso uguali a quelle memorizzate nella tabella credenziali. Detto tutto ciò, quando cambio una password con una contenente dei blank space questa viene cambiata senza problemi nella tabella credenziali dove il campo password non è criptato ma è in chiaro, mentre all'interno dei Ruoli Utente,dove viene criptata in md5, viene sì cambiata ma a quanto pare non come vorrei visto che nel login successivo alla modifica ( il log in viene fatto tramite php ) mi dice che le credenziali sono sbagliate.

Questo errore non si presenta se all'interno delle password non ci sono spazi bianchi...

posto le parti interessate del mio codice php:

Codice PHP:
// [...]
//questa conterrà la nuova password, viene riempita grazie ad una form
$pwd $_POST["pwd"];

// [...]

if(isset($pwd)){
        
//doQuery è una mia funzione postata sotto
        //$_SESSION["user"] e $_SESSION["pwd"] contengono lo user e password dell'utente attualmente loggato
        //la prima parte della query cambia la password ai ruoli utente
        //la seconda la cambia nella tabella credenziali
    
$risp doQuery("alter role ".$_SESSION["user"]." password '".$pwd."';
            update motorizzazione.credenziali set pass='"
.$pwd."' where pass='".$_SESSION["pwd"]."';");
        
//funzione postata sotto
    
printAnswer($risp);
    
//solo se il cambio è avvenuto allora aggiorno la varibile di sessione
    
if($risp == "")
        
$_SESSION["pwd"]=$pwd;
}

// [...]

function doQuery($str_query){
    
/* funzione che passata una stringa contenente una query si connette al DB, effettua la query e
    nel caso in cui la query vada a buon fine restituisce le tuple ottenute ( array di array ) altrimenti
    restituisce una stringa contenente il messaggio di errore riscontrato*/
    
$conn = @pg_connect("dbname=ufficio_della_motorizzazione user=".$_SESSION['user']." password=".$_SESSION['pwd']);
    
$query pg_send_query($conn,$str_query);
    
    if(
$query){
        
$risposta pg_get_result($conn);
        
$err pg_result_error_field($risposta,PGSQL_DIAG_MESSAGE_PRIMARY);
        return (
$err == "")? pg_fetch_all($risposta): $err;        
    }else
        print(
"ERRORE INTERNO");
}

function 
printAnswer($asw){
    
/* funzione che presa una risposta di una query stampa il possibile messaggio di errore, oppure
    in caso di successo delega la stampa delle tuple alla funzione printTable*/
    
if(is_array($asw))
                
//funzione che stampa in forma tabellare non la posto perchè non inerente
        
printTable($asw);
    else 
        if(
$asw!=""){
            echo 
"<div class='queryErrorBox'>";
             include(
$includePath."boxBegin.html");
             echo 
"<div class='title'>FATAL ERROR</div>";
             echo 
"<div class='error'>".$asw."</div>";
             echo 
"<input type='button' value = 'Indietro' onclick='history.back()'></input>";
             include(
$includePath."boxEnd.html");
            echo 
"</div>";
        }else
            echo 
"tutto ok";

Premetto che ho provato a trimmare e aggiustare le slash nella pwd come segue:
Codice PHP:
$pwd addslashes(trim($pwd)); 
utilizzandolo ovviamente anche nella $_SESSION["pwd"] ma niente stesso risultato... che sia un problema di codifica? help