Originariamente inviato da Leilond
Sicuro che mysql_connect è andato bene?
Sicuro che mysql_select_db è andato bene?

Qui tutto lascia supporre che il query va male e se la sintassi è corretta, il problema deve essere altrove, ma sempre a livello di mysql, poichè execute stesso restituisce false e ciò è possibile solo nel caso in cui il query sia sbagliato o non possa essere eseguito per qualche motivo (database diverso da quello immaginato o non selezionato, connessione fallita o chiusa ecc)
Li altri li copia perchè fetch_array fornisce l'array nelle due forme, associativa e numerale
Se vuoi solo la forma associativa devi usare fetch_assoc
Rimane il problema dell'execute che risponde false

intanto correggi la funzione execute, perchè come l'hai scritta tu esegue il query 2 volte ed è uno spreco di risorse
Inoltre le parentesi graffe, sono opzionali, ma "non lo sono" , nel senso che è sempre meglio metterle
Codice PHP:
    public function execute($sql) {
        
$result $this->mysqli->query($sql);
        if( 
$result ) {
           return 
$result;
        } else {
           return 
false;
        }
    } 
Controllerei la funzione query del tuo oggetto.. perchè ho come l'impressione che sia lei ha ritornare "null"