franksun Skrevet 7. mai 2005 Skrevet 7. mai 2005 Hei, jeg skulle ha henta en variabel og satt den i en mysql-spørring, her er pseaudo for å se hva jeg mener: eller prøve å mene.. eller. eller... print "Skriv inn fornavn : "; my $fornavn = <STDIN>; print "Skriv inn etternavn: "; my $etternavn = <STDIN>; ("INSERT INTO db (fornavn, etternavn) VALUES ('$fornavn', '$etternavn')")
mysjkin Skrevet 8. mai 2005 Skrevet 8. mai 2005 Du må bruke dbi / dbd::mysql for dette: use DBI; use strict; my($username,$password)=("USER","PASS"); my $dbhandle=DBI->connect(dbi:mysql:dbname=<database>;$username;$password) my $inserthandle=$dbhandle->prepare('INSERT INTO db ((fornavn,etternavn) VALUES (?,?)'); print "Skriv inn fornavn : "; my $fornavn = <STDIN>; print "Skriv inn etternavn: "; my $etternavn = <STDIN>; $inserthandle->execute($fornavn,$etternavn); DBI->connect er langsom, så dersom du skal gjøre flere spørringer, gjør du bare en connect ført og så kjører flere spørringer fra den. Det er også mulig å bygge opp query-strengen med det du skal inserte ("INSERT INTO db (fornavn, etternavn) VALUES ('$fornavn', '$etternavn')") og så kjøre execute uten ekstra argumenter, men sikkerhetsmessig (og ytelsesmessig dersom du skal kjøre flere liknende spørringer) er bruk av prepare bedre. Her er det forøvrig heller ikke noe feilhåndtering, det må du også ha med Se forøvring dokumentasjonen for DBI og DBD::mysql. M.
franksun Skrevet 11. mai 2005 Forfatter Skrevet 11. mai 2005 frank@picasso:~$ perl ka.plx syntax error at ka.plx line 4, near "dbi:" syntax error at ka.plx line 5, near "$password) " Execution of ka.plx aborted due to compilation errors.
franksun Skrevet 11. mai 2005 Forfatter Skrevet 11. mai 2005 (endret) [frank@paranoid kundesys]$ perl insert2.pl Skriv inn fornavn : per Skriv inn etternavn: persen DBD::mysql::st execute failed: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(fornavn,etternavn) VALUES ('per\n','persen\n')' at line 1 at insert2.pl line 20, <STDIN> line 2. code: #!/usr/bin/perl #insert2.plx use warnings; use strict; use DBI; my ($dbh, $rows); $dbh=DBI->connect('dbi:mysql:brukere;host=vikxiXxnXfjXord.org','frank','xxxxxu') || die "Couldnt open database: $DBI::errstr\n"; my $inserthandle=$dbh->prepare('INSERT INTO checkin ((fornavn,etternavn) VALUES (?,?)'); print "Skriv inn fornavn : "; my $fornavn = <STDIN>; print "Skriv inn etternavn: "; my $etternavn = <STDIN>; $inserthandle->execute($fornavn,$etternavn); Endret 11. mai 2005 av franksun
franksun Skrevet 12. mai 2005 Forfatter Skrevet 12. mai 2005 Ble tråden sletteT? vel, uansett, jeg fant fram til problemet, eller jeg fikk hjelp til å finne det en for mye parantes på 'INSERT INTO checkin ((fornavn,etternavn) VALUES (?,?)');
mysjkin Skrevet 13. mai 2005 Skrevet 13. mai 2005 Jaja, sånn går det når man bare slenger inn noe kode uten å skjekke det skikkelig.... Du lærte litt debugging ihvertfall... ;-) M
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå