PDA

Visualizza la versione completa : Cambiare dati in db Mysql con perl


Fixtour
14-05-2004, 19:20
Salve in un file perl ho la necessità di cambiare dei valori di un mio database mysql, ma non ho la minima idea di come sia la sintassi per la connessione, il cambio dati e la disconnessione.
Non è difficile per chi usa perl da tempo .......
Grazie

shishii
15-05-2004, 15:32
Ciao,

primo... non è difficile neanche per chi studia un pò.

secondo... la tua domanda non è chiara... intendi uno *script* perl? cosa devi cambiare?

Fixtour
15-05-2004, 15:48
Grazie ........ non hai torto infatti ho studiato un pò qui è lì e avendo buone basi di php ho risolto tutto, solo una cosa se è possibile, lo script perl non funziona se non metto un output video tipo:
print "testo qualsiasi\n";
print "secondo testo qualsiasi\n";

inoltre mi stampa solo la seconda istruzione ......... come mai?
Hai idea del perchè non funziona lo script (esce se non ricordo male un errore 404) se non metto l'output video? :dhò:
Ciao

shishii
15-05-2004, 16:13
si tratta di uno script CGI, cioè evocato via web?

in questo caso è ovvio che il sistema client-webserver si aspettano una risposta quindi devi alla fine generare un output http, sia che si tratti di codice html, sia che sia una redirezione.

per il secondo problema bisogna vedere come viene generato l'header, il metodo più diretto è:

print "Content-type: text/html\n\n";
print "quello che vuoi\n";

Fixtour
15-05-2004, 17:00
Quindi se dovrei farne un uso non via web ........ tipo un file cron jobs non è necessario l'output?

shishii
15-05-2004, 17:10
esatto... può essere addirittura dannoso per cui spesso quando si setta cron per evitare emissioni di output si redireziona in /dev/null, ad esempio:

/home/utente/cgi-bin/script.pl > /dev/null

Fixtour
15-05-2004, 17:22
Complimeti sei preparato .......... vediamo se sai questo :confused: :
Ho da far eseguire a questo script perl due query mysql tipo

UPDATE tabella1 SET campo1=valore1
UPDATE tabella2 SET campo2=valore2

ho preparato il codice così ...... ma non funziona

my $query = "UPDATE tabella1 SET campo1=valore1 ;";
$query .= "UPDATE tabella2 SET campo2=valore2 ";

my $ins=$dbh->prepare("$query");
$ins->execute();
$ins->finish();

da cosa dipende? se faccio una query per volta funziona ma tutte e due no perchè?
Faccio questo per non mettere troppo codice e per imparare una cosa nuova ;-)

shishii
15-05-2004, 17:33
my $query = "UPDATE tabella1 SET campo1=valore1 ;";
$query .= "UPDATE tabella2 SET campo2=valore2 ";


per molti motivi è meglio non usare questa forma, ma eseguire una query per volta. Vedi esempio dopo.


my $ins=$dbh->prepare("$query");
$ins->execute();
$ins->finish();


il prepare si usa per i select e simili non per insert update, ecc, dove si usa il metodo "do".

quindi il tuo codice potrebbe essere:



my @query = (
"UPDATE tabella1 SET campo1=valore1",
"UPDATE tabella2 SET campo2=valore2"
);

foreach $query (@query) {
$dbh->do($query);
}

Fixtour
15-05-2004, 17:43
Bravo ........ vedi studiando un pò avevo ricavato quella forma un pò contorta ....... ma che funzionava cmq.
Tu mi hai dato una grande mano facendomi risparmiare molto tempo ... così posso riposare un pò ....... :sonno:
Grazie e ciao :ciauz:

shishii
15-05-2004, 17:48
bravo riposa.... :sonno: ... io preferisco continuare a studiare e a imparare :D

Loading