/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
New@this: $variabler i en insert into mysq~
Fra : Torben Jakobsen


Dato : 03-02-03 21:41

Davs...

Har lidt problemer med at få mit test scriptet her til at smide det
variablerne $name1 og $name2 er blevet sat til ind i min mysql db.
Den indsætter bogstavlig talt "$name1" " $name2 " ind istedet for.
Har søgt lidt hist og pist på google for at se om jeg hurtigt kunne finde en
løsning, men faldt ikke over noget jeg kunne få til at virke :(
Har kun været igang med perl i 3 dage sååå er ikke så fandens haj endnu, men
håber at en ad jer lige kan gi mig at puf i den rigtige retning.

#!/usr/bin/perl

$name1 = namenumberone;

$name2 = namenumbertwo;

use strict;
use DBI;

my $dsn = 'dbi:mysql:shoes:localhost:3306';

my $user = 'kagehat';
my $pass = 'ufrivilligfisk';

my $dbh = DBI->connect($dsn, $user, $pass) or die "Can.t connect to the DB:
$DBI::errstr\n";

my $sth = $dbh->prepare('insert into subscribers(username, emailaddr)values
("$name1", "$name2")');

$sth->execute();

$sth->finish;

# I am finished with this connection to the database
$dbh->disconnect;



 
 
Allan Joergensen (03-02-2003)
Kommentar
Fra : Allan Joergensen


Dato : 03-02-03 21:54

Torben Jakobsen <snuden@spanden.dk> wrote:

> my $sth = $dbh->prepare('insert into subscribers(username, emailaddr)values
> ("$name1", "$name2")');
> $sth->execute();

Du kan med fordel bruge placeholders (kig i perldoc DBI), din kode skal
så se nogenlunde således ud:

my $sth = $dbh->prepare('INSERT INTO subscribers (username, emailaddr)
   VALUES (?, ?);

$sth-execute($name1, $name2)

En del af problemet i din kode er at ""'er gør at Perl "parser" (i
mangel af et bedre ord) dine variabler, så skal du smide '' om i stedet.
Men generelt er det en rar ting at bruge placeholders.

mvh
--
Allan Joergensen aka alj on eu.freenode.net

"Colonel North, may we borrow your shredder?" -- Hillary Clinton

Allan Joergensen (03-02-2003)
Kommentar
Fra : Allan Joergensen


Dato : 03-02-03 21:56

Allan Joergensen <allan@nowhere.dk> wrote:

> my $sth = $dbh->prepare('INSERT INTO subscribers (username, emailaddr)
>    VALUES (?, ?);

my $sth = $dbh->prepare('INSERT INTO subscribers (username, emailaddr)
VALUES (?, ?)');

er vist mere korrekt.

--
Allan Joergensen aka alj on eu.freenode.net

"Why didn't you just say so?" Sisko

Peter Makholm (03-02-2003)
Kommentar
Fra : Peter Makholm


Dato : 03-02-03 22:00

"Torben Jakobsen" <snuden@spanden.dk> writes:

> my $sth = $dbh->prepare('insert into subscribers(username, emailaddr)values
> ("$name1", "$name2")');

Det du direkte vil er:

my $sth = $dbh->prepare("insert into subscribers(username, emailaddr)values (\"$name1\", \"$name2\")");

*Men* så får du alle mulige problemer med SQL-injection hvis du ikke
passer på hvad der står i $name1 og $name2. Du skal hellere gør nogeet
ala:

my $sth = $dbh->prepare("insert into subscribers(username, emailaddr)values (?,?)");

$sth->execute($name1,$name2);

--
Peter Makholm | 'Cause suicide is painless
peter@makholm.net | It brings on many changes
http://hacking.dk | And I can take or leave it if I please
| -- Suicide is painless

Torben Jakobsen (03-02-2003)
Kommentar
Fra : Torben Jakobsen


Dato : 03-02-03 23:06

Tak skal i ha det hjalp en hel del på det

"Peter Makholm" <peter@makholm.net> wrote in message
news:87of5t2i88.fsf@xyzzy.adsl.dk...
> "Torben Jakobsen" <snuden@spanden.dk> writes:
>
> > my $sth = $dbh->prepare('insert into subscribers(username,
emailaddr)values
> > ("$name1", "$name2")');
>
> Det du direkte vil er:
>
> my $sth = $dbh->prepare("insert into subscribers(username,
emailaddr)values (\"$name1\", \"$name2\")");
>
> *Men* så får du alle mulige problemer med SQL-injection hvis du ikke
> passer på hvad der står i $name1 og $name2. Du skal hellere gør nogeet
> ala:
>
> my $sth = $dbh->prepare("insert into subscribers(username,
emailaddr)values (?,?)");
>
> $sth->execute($name1,$name2);
>
> --
> Peter Makholm | 'Cause suicide is painless
> peter@makholm.net | It brings on many changes
> http://hacking.dk | And I can take or leave it if I please
> | -- Suicide is painless



Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste