---
title: "Perl och SQL"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/83579-perl-och-sql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Yolina"
published: "2003-08-06T13:04:47.000Z"
updated: "2003-08-07T07:04:26.000Z"
replies: 2
views: 273
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/83579-perl-och-sql"
---

# Perl och SQL

## #1 — Yolina, 2003-08-06T13:04Z

Hejsan,

En SQL-relaterad Perlfraga:

Jag arbetar med en mySQL Databas. Jag vill hämta värden fran en tabell och lagra i en annan tabell. Jag hämtar värdet/strängen med SELECT och lagrar i en variabel $variabel. Sa langt inga problem.

Sedan vill jag med INSERT lagra strängen i en ny tabell. Da far jag enfast felmeddelanden. Jag misstänker att Perl inte gillar tecknen " " som Strängen har i början och slutet.

Hade jag själv definierat texten, hade det bara varit att skriva:

INSERT INTO Temp VALUES (\\"Text här\\")

Men jag har ju min text i en variabel och skulle vilja skriva:

INSERT INTO Temp VALUES ($variabel)

Men de gar ju inte.. har nagon nagot förslag? Gar det att fa bort "" tecknen pa nagot vis?

Tack pa förhand Yolina

Permalänk: https://www.webforum.nu/p/83579

## #2 — Hansen, 2003-08-06T14:01Z

Hej

Kika närmare på placeholders eller DBI-\>quote.

[DBI.pm#Database_Handle_Methods](http://search.cpan.org/author/TIMB/DBI/DBI.pm#Database_Handle_Methods)
[DBI.pm#Placeholders_and_Bind_Values](http://search.cpan.org/author/TIMB/DBI/DBI.pm#Placeholders_and_Bind_Values)

Ett exempel på hur du kan använda placeholders:

```
#!/usr/bin/perl

use strict;
use warnings;
use DBI;

sub DBI_DSN  () { 'DBI:mysql:database:mysql.host.net'   }
sub DBI_ATTR () { { PrintError => 0, AutoCommit => 1 }  }
sub DBI_USER () { 'username'                            }
sub DBI_PASS () { 'password'                            }

my $dbh = DBI->connect( DBI_DSN, DBI_USER, DBI_PASS, DBI_ATTR )
  or die "Couldn't connect to database: " . DBI->errstr;

my @fields = qw( first_name last_name );
my $fields = join ( ',', @fields );
my $places = join ( ',', ('?') x @fields );

my $sql_insert = <<SQL;
    INSERT INTO test ($fields) VALUES($places)
SQL

my $sql_select = <<SQL;
    SELECT first_name, last_name
    FROM test
SQL

my $sth_select = $dbh->prepare($sql_select)
  or die "Couldn't prepare statement: " . $dbh->errstr;

my $sth_insert = $dbh->prepare($sql_insert)
  or die "Couldn't prepare statement: " . $dbh->errstr;

$sth_select->execute()
  or die "Couldn't execute statement: " . $sth_select->errstr;

while ( my @row = $sth_select->fetchrow_array ) {

     $sth_insert->execute(@row)
       or die "Couldn't execute statement: " . $sth_insert->errstr;
}

$dbh->disconnect;

__END__

CREATE TABLE test (
    test_id int(11) NOT NULL auto_increment,
    first_name varchar(50) NOT NULL,
    last_name varchar(50) NOT NULL,
    PRIMARY KEY (test_id)
);
```

Permalänk: https://www.webforum.nu/p/1130610

## #3 — Yolina, 2003-08-07T07:04Z

Tusen tack!

Exemplet funkar ju klockrent, och är även för en nybörjare som mig hyffsat förstaeligt ;)

/Yol

Permalänk: https://www.webforum.nu/p/1130935

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/83579-perl-och-sql
