- Home
- Categorie
- Coding e Sistemistica
- PHP
- [PHP - OOP] Semplice classe OOP mi inchioda Firefox
-
[PHP - OOP] Semplice classe OOP mi inchioda Firefox
Ciao,
ho una classe che dovrebbe gestirmi la connessione al db ed eseguire delle semplici query. Al momento il codice l'ho strutturato come segue (notate il while commentato):
[PHP]
class Cnt{
private $_result;
const HOST = 'localhost';
const USER = 'root';
const PASS = '';
const DB = 'prova';
private $_cnt = FALSE;function __construct(){ $this->_cnt = mysqli_connect(self::HOST, self::USER, self::PASS, self::DB); if(!$this->_cnt) die('Non connesso'); mysqli_query($this->_cnt, "set names 'utf8'"); } function query($query){ $this->_result = mysqli_query($this->_cnt, $query); return $this->_result; } function __destruct(){ mysqli_free_result($this->_result); mysqli_close($this->_cnt); }
}
$cnt = new Cnt;
$query = 'SELECT DISTINCT nome FROM utenti';
$a = $cnt->query($query);
$b = mysqli_fetch_assoc($a);
//while($b){
echo $b['nome'];
//}
[/PHP]
La colonna "nome" utenti ha solo 4 record, di cui solo 1 duplicato. In teoria dovrebbe quindi restituirmi 3 nomi.
Il problema sorge quando decommento il while. Il browser si blocca, la RAM va in saturazione e dopo un po' Firefox viene chiuso automaticamente con il classico avviso del crash dell'applicazione.
Per carità... la classe sarà pure fatta male, ma non mi sembra sia un calcolo così complesso da aver bisogno di 4 GB di ram!
Dov'è l'inghippo secondo voi?
-
Ciao,
php è lato server ovviamente, quindi con la problematica di firefox in pratica c'entra pochissimo. L'unico modo per inchiodare il browser è mandargli in echo una marea di testo.
-
Lo so... è per quello che non capisco il motivo del blocco. Tu vei qualche errore nel codice che potrebbe giustificarlo?
-
Non sò se hai editato ora il post o se non avevo visto io la parte finale prima, comunque adesso si vede benissimo che il ciclo è sbagliato, ed è infinito per cui hai un echo continuo di testo che porta al blocco del browser.
Devi fare cosi:while($b = mysqli_fetch_assoc($a)) { echo $b['nome']; }
-
Eh... vedi che l'errore c'era?!
Sono quelle stupidaggini che fanno perdere le ore!
Grazie, ora funziona.