ahhhh risolto, il $db_result mi tornava dalla funzione ma non avevo notato che chiamavo la funzione con $verify_db e non $db_result.
Comunque il problema era che se il database dava errore(se, per esempio, non riusciva a connettersi) quest'ultimo veniva trasmesso come risposta insieme all'effettiva risposta in json.
Lo script in ajax si aspettava solo la risposta in json e non l'errore del db quindi non lo interpretava.
Ho messo @ davanti al tentativo di connessione al db nella funzione -@mysql_connect($host, $user, $pass)- e adesso in risposta alla richiesta in ajax dà soltanto l'array in json e non più l'errore mysql.
grazie del supporto.