perl ja mysql

Whiz 20.01.04 23:18

Lyhyt esimerkki kuinka kannasta voidaan lukea tietoa ja kuinka sitä voidaan syöttää sinne. Simppeli esimerkki ja soveltuu hyvin käytettäväksi esmes irssi-scripteissä.

 Tekstiversio  Arvo: 6 (10 ääntä)  Äänestä: +  -
#!/usr/bin/perl -Tw
use strict;
use DBI;

# muuttujien määrittely
my $db_host     = 'localhost';
my $db_name     = 'kantanimi';
my $db_username = 'username';
my $db_password = 'salakala';
my $dsn         = 'DBI:mysql:'.$db_name.':'.$db_host;

# kantayhteyden otto
my $db_conn     = DBI->connect($dsn, $db_username, $db_password);

# sql-lause joka halutaan suorittaa, jos lauseeseen halutaan sijottaa
# muuttujia, niin laita ?-merkki niiden tilalle, ja anna ne
# $sth->execute() -funktiolle parametreiksi
my $sql_string  = "INSERT INTO foo (id, aika, nimi, fuu) VALUES ('',NOW(),?,?);";

my $sth = $db_conn->prepare($sql_string);
# suoritetaan sql-kysely ja laitetaan muuttujat oikeille paikoille
$sth->execute("foo", "fii");


# uusi sql-lauseke ja kysely
$sql_string     = "SELECT aika, nimi FROM foo";
$sth            = $db_conn->prepare($sql_string);
$sth->execute();

# tälläkertaa otetaan vastaan bittiä mitä kanta sinulle suoltaa
# joka rivin kohdalla sieltä tulee kaksi muuttujallista tavaraa,
# joita voidaan käyttää sitten ihan normaalisti while-lohkon
# sisällä muuttujina :)
while( my($aika, $nimi) = $sth->fetchrow_array ) {
        print $aika . " " . $nimi . "\n";
}
$db_conn->disconnect();
 

Whiz 23:21 20.1.04 
Johtuen päähänpistosta tehä toi koodipätkä niin virheitä voi olla ja ne havaittaessa voi niistä ilmoittaa ystävällisesti, niin korjaan.
vleinone 11:27 22.1.04 
Ihan jees pätkä näyttäisi olevan. Väänsin itse tuossa jokin aika sitten taas valmiimmaksi omaa Perl/mySQL/Apache systeemiä. Tarkoitus olisi tehdä kantapohjainen ip-osoitteiden varasto. Jos jotain kiinnostaa niin http://www.sunpoint.net/~vleinonen/index.htm ja sieltä Ipdb0.9 systeemi ei ole vielä ihan kuosissa, mutta kehittyy koko ajan, kun jaksaa vaan vääntää.
Jranta 23:27 28.4.05 
Loppuun voisi lisätä:

$db_conn->disconnect();
editoitu: 15:44 3.7.06
mrkebab 15:43 3.7.06 
Tein taulun foo ja sille seuraavat attribuutit:
id = int not null primary key auto_increment
aika = datetime
nimi varchar (20)
fuu varchar (20)

Nyt kun suoritan ohjelman, niin tiedot viedään kantaan ja tulostetaan, mutta lopuksi tulee vielä jokin herja
DBI::db=HASH(0x91f1b60)->disconnect invalidates 1 active statement handle
(either destroy statement handles or call finish on them before disconnecting) at ./Perl.pl line 41.



Mikä tuo herja mahtaa olla ?
ministeri 10:49 4.7.06 
Lisää lause: $sth->finish();

ennen disconnect(); lausetta.