Newsgroup: it.comp.lang.perl
Titolo: mysql e select * from table

Ho installato il modulo mysql DBD-mysql-2.1027, l'ho installato cosě da
windows (il pc collegato ad internet):
ppm
install DBI
install DBD-mysql
Il problema č che una volta collegato al database mysql tramite script non
so fare come fare un (select * from tabella):
Questo č lo script che funziona, ma come faccio il select??
Grazie.
use Mysql;
$host="192.168.1.1";
$database="miopc";
$user="root";
$table="pcag";
$dbh = Mysql->connect($host, $database, $user);
$dbh->selectdb($database);
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Questo è lo script che funziona, ma come faccio il select??
Immagino con execute o qualche metodo fetch, preceduto o non preceduto da un
prepare. Ammetto però che NEANCHE io ho guardato il manuale di DBD::MySql.
Ciao.



Il principio è che, tranne in rari casi, nn hai bisogno del manuale di
DBD::qualcosa, ma solo di quello di DBI. In genere il modo di fare la
fetch è qualcosa del tipo
$sql = "SELECT...";
$sth = $dbh->prepare($sql);
$sth->execute(@params);
while (my @row = $sth->fetchrow_array) {
  #do something
}
-- 
Leo "TheHobbit"

Ce l'ho quasi fatta però tutto questo mi mostra solo la prima riga della
tabella selezionata. Come faccio a dirgli mostrami tutto (e dico tutto) il
contenuto della tabella casa??? Non importa ci siano i nomi delle colonne
(anzi meglio non ci siano), però dovrei vedere i contenuti di tutte le
colonne della tabella casa.
Grazie.
 
use DBI;
my $db = 'DBI:mysql:pcagenzia:192.168.1.1';
my $username = 'root';
my $dbh = DBI->connect($db, $username);
my $sql = qq{ SELECT * FROM casa };
my $sth = $dbh->prepare($sql);
$sth->execute;
my @array = $sth->fetchrow_array;
print "@array[0] ";
print "@array[1] ";
print "@array[2] ";
print "@array[3] ";
print "@array[4] ";
print "@array[5] ";
print "@array[6] ";
print "@array[7] ";
print "@array[8] ";
print "@array[9] ";
print "@array[10] ";
print "@array[11] ";
print "@array[12] ";
print "@array[13] ";
print "@array[14] ";
print "@array[15] ";
print "@array[16] ";
print "@array[17] ";
print "@array[18] ";
print "@array[19] ";


Ho risolto


 print "@array[5] ";
[CUT]
Scusa se ti do un dritta che non c'entra con il problema che hai.
La sintassi + corretta per ricavare il valore da una lista non è
	@array[n]
	bensì
 	$array[n].
Consiglio di usare sempre use strict e use warnings così non si può fare
a meno di scrivere codice almeno sintatticamente corretto.
Scusa la puntualizzazione,
-- 
+--------+ ASCII ribbon campaign ( )
|  kral  |  - against HTML email  X 
+--------+              & vCards / \

 }
Una cosa che sembra scontata ma che non lo e`.
Anche se a prima vista potrebbe non sembrare cosi`, gli elementi che
si trovano nell'array non corrispondono alle righe della tabella, ma
corrispondono agli elementi che si trovano nella riga. Per spiegarmi
meglio faccio un piccolo esempio: se ho una tabella che segue questo
schema:
1	pippo		pluto
2	paperino	minni
l'array poplato da $sth->fetchrow_array risultera`:
$row[0] = 1
$row[1] = pippo
$row[2] = pluto
In pratica, solo ripetendo $sth->fetchrow_array si otterranno i dati
contenuti nelle altre righe.
Spero di essere stato chiaro (e soprattutto utile ^^; )
Henryx
-- 
GnuPG fingerprint = 42F9 521B 63C7 89FE 354C  89FA 4E49 3E2D 2EB6 B014