- Home
- Categorie
- Coding e Sistemistica
- Coding
- Classe database: restiruire array da query
- 
							
							
							
							
							Classe database: restiruire array da queryCiao a tutti, 
 ho un quesito che mi sta "mangiando l'anima".Ho la mia bella classe database, con le classiche funzioni 
 connetti() <- connette al database
 query() <- esegue una queryfetchrow() <- ???? 
 fetchall() <- ???poi ho il mio bel file php che creato l'oggetto, esegue 
 connessione
 query: fa una select dei dati di una tabella
 chiamata a fetchall
 output risultatiposto un po' di codice così è più chiaro la classe 
 [PHP]
 <?php
 class mysql_db
 {
 private $sql;public function __construct($username, $password, $database, $host) { if($conn = mysql_connect($host,$username,$password) or die (mysql_error())) { $selectDB = mysql_select_db($database,$conn) or die (mysql_error()); } } public function query($sql) { $this->sql = mysql_query($sql) or die (mysql_error()); } public function fetchrow() { } public function fetchall() { } public function __destruct() { mysql_close(); }} 
 ?>
 [/PHP]e l'altro file 
 [PHP]
 require_once("mysql.php");//Create the mySQL object 
 $sqlDB = new mysql_db('username', 'password', 'database', 'localhost');//perform an sql query to select the first 10 values in the db 
 $sqlDB->query("SELECT * FROM test ORDER BY id ASC LIMIT 10");//get the 10 rows 
 $rows = $sqlDB->fetchall();foreach ($rows as $row) 
 {
 echo $row['id'].": ".$row['name']."<br/>";
 }
 [/PHP]Bene, come proseguo? In pratica con fetchall() dovrei restituire l'array della select. 
 Ho provato con "return mysql_fetch_array($this->sql)", ma restituisce le prime due righe della tabella.
 L'utilità dell'altra funzione fetchrow() qual'è secondo voi?
 
- 
							
							
							
							
							Risolto su un altro forum con public function fetchall() { 
 $return = array();
 while($row=mysql_fetch_array($this->sql)) $return[] = $row;
 return $return;
 }Qualcuno invece ha idea dell'utilità del metodo fetchrow()? 
 
- 
							
							
							
							
							
fetchrow() ti ritorna i-esima riga della query se già eseguita una seconda volta, la prima in caso contrario. 
 Quindi potremmo dire che la fetchall è l'esecuzione di N fetchrow
 
- 
							
							
							
							
							@peppeocchi said: Ciao a tutti, 
 Bene, come proseguo? In pratica con fetchall() dovrei restituire l'array della select.
 Ho provato con "return mysql_fetch_array($this->sql)", ma restituisce le prime due righe della tabella.fetchall() significa che vuoi prelevare tutti i record, quindi è un array multidimensionale. [php] 
 $rows = array();
 while ($row = mysql_fetch_array($this->sql)) $rows[] = $row;
 return $rows;
 [/php]@peppeocchi said: L'utilità dell'altra funzione fetchrow() qual'è secondo voi? Quello che hai scambiato per fetchall()... fetchrow() deve prelevare solo un riga, quindi è esattamente return mysql_fetch_array($this-sql). Non ho capito perché dici che ritorna due righe e non una. 
 
- 
							
							
							
							
							Perchè è questo il contenuto dell'array Array ( [0] => 1 [id] => 1 [1] => Hello World! [name] => Hello World! ) Mi sono confuso io perchè ho una tabella popolata con gli stessi risultati. Insomma come output ho 2 volte la stessa riga. Iceman84 
 [INDENT]fetchrow() ti ritorna i-esima riga della query se già eseguita una seconda volta, la prima in caso contrario.
 Quindi potremmo dire che la fetchall è l'esecuzione di N fetchrow[/INDENT]e se volessi fare interagire entrambi i metodi senza perdere le key? 
 Perchè sull'altro file ho
 [PHP]
 $rows = $sqlDB->fetchall();foreach ($rows as $row) 
 {
 echo $row['id'].": ".$row['name']."<br/>";
 }
 [/PHP]