PDA

Visualizza la versione completa : Perl connessione a mysql


alberto27
14-01-2005, 11:23
Ciao dovrei inserire dei dati tramite perl in un database Mysql. Come faccio a fare la connessione ed il successiovo inserimento? Perl ha gli stessi comandi di PHP?

Grazie
Alberto

LordSaga640
14-01-2005, 12:51
use DBI;
$dbh = DBI->connect("DBI:mysql:database=$database;host=$hostname;port=$ port", $user, $password);
$dbh->do("INSERT INTO file_hash (hash,dim) VALUES(?,?)", undef, "HASH",46465);


per capire meglio usa la guida al modulo DBI inclusa nella distribuzione perl.
nell'esempio che ti ho fatto le prime righe mi sembrano chiare.
$hostname generalmente 127.0.0.1 se il DB locale.

$dbh->do esegue una query..
Gli ultimi due valori passati alla funzione DO sostituiscono correttamente i due punti interrogativi della query facendo un escape sicuro.

guardati la guida di DBI o DBD.
Ciao

Claudio Vituzzi
14-01-2005, 14:58
ecco un p di esempi:



use DBI;

$dbh = DBI->connect ("DBI:mysql:dbname=prova_db");
@linea = $dbh->selectrow_array("SELECT * FROM indirizzi");

foreach $line (@linea) {
print $line, "\n";
}




use DBI;

$dbh = DBI->connect ("DBI:mysql:dbname=prova_db");

$sth = $dbh->prepare( q{
SELECT nome, cognome, email
FROM indirizzi
} );

$sth->execute;

while (($nome, $cognome, $email) = $sth->fetchrow_array) {
print "$nome $cognome, $email\n";
}




use DBI;

$dbh = DBI->connect ("DBI:mysql:dbname=prova_db");

$sth = $dbh->prepare("INSERT INTO table(foo,bar,baz) VALUES (?,?,?)");

$sth->execute( $foo, $bar, $baz );

rel_style
25-01-2007, 17:13
Io ho installato il supporto perl ma non capisco come mai non posso usare


use DBI;
negli script. Mi sono documentato e ho visto che devo installare il dist_file scaricabile dal sito ufficaile CPAN. Ma sembra che sia andato oltre le mie conoscenze.

Mi sapete dare qualche ragguaglio in merito? Cosa devo esattamentre installare?

shishii
26-01-2007, 11:39
che sistema operativo usa il computer su cui devi operare?

rel_style
03-02-2007, 13:58
Scusa shishii

Originariamente inviato da shishii
che sistema operativo usa il computer su cui devi operare?

Mi dispiace per la tarda risposta ma mi sono trasferito da poco e non ho ancora la possibilita'
di usare Internet se non da un Internet Point.

Comunque uso Linux/Debian. Non ho problemi con php MySQL e Apache (il tutto installato dai codici sorgenti). Ho comunque cercato qualche pacchetto in synaptic con la chiave di ricerca dist_file ma nulla. E poi e' da tenere in considerazione che la macchina interessata e' off-line quindi non posso usare il wget.

Se occorrono altre indicazioni chiedi pure. Resto a disposizione e soprattutto non ho urgenza al riguardo. Grazie!

shishii
07-02-2007, 13:49
cosa ti dice il sistema se digiti:

# perl -e 'use DBI;'

rel_style
10-02-2007, 11:10
Ecco di seguito il responso del comando lanciato da shell


web-1:~# perl -e 'use dbi'
Can't locate dbi.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/i686-linux-thread-multi /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/i686-linux-thread-multi /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl/5.6.2 /usr/local/lib/perl5/site_perl .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
web-1:~#



Ho cercato con Synaptic la chiave dbi.pm e ho installato alcuni pacchetti che sembravano attinenti all'utilizzo perl-apache ma nulla di fatto (Distro Debian).

shishii
10-02-2007, 16:21
evidente che devi istallare il modulo DBI e DBD::Mysql

puoi procedere in due modi:

1- scarichi i due moduli da http://search.cpan.org
li scompatti con:

# tar -xzf <file.tar.gz>

entri nella directory creata con:

# cd <directory>

e lo istalli con:

# perl Makefile.PL
# make
# make test
# make install

2- oppure utilizzi la shell di cpan:

# perl -MCPAN -eshell

rispondi alle varie domande (i default in genere vanno bene)

e poi:

cpan> install DBI

e poi

cpan> install DBD::Mysql

rel_style
12-02-2007, 11:22
:fighet:

Grazie 1000. Adesso scarico i moduli dai sorgenti. Poi ti terro' aggiornato.
Mi sa che non posso usare la shell CPAN. Il computer non e' collegato a nessuna rete.

Mi auguro che vada tutto per il verso giusto!

:)

Loading