- Home
- Categorie
- Coding e Sistemistica
- PHP
- Classe database: restiruire array da query
-
Classe database: restiruire array da query
Ciao 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]