Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]788[/thread]

Perl Datenbank verändern mit UPDATE



<< >> 10 Einträge, 1 Seite
Danwe
 2006-07-25 14:52
#8463 #8463
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich versuche auf eine DB aus Perl zuzugreifen u. dabei eine Änderung in einer der bereits vorhandenen Einträge vorzunehmen. Das ist nicht mein erster DB-Zugriff in dem Script, aber immer wieder wenn ich einen neuen Befehl umsetzen muss geht wieder etwas nicht.
Meine Frage ist nun, was hier dran falsch sein könnte?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
    &connect();

my $sql = qq
{
UPDATE gaestebuch
SET Nachricht = $nachricht, Name = $name, Wohnort = $wohnort, Homepage = $homepage, Titel = $titel
WHERE EintragID = $id
};
my $sth = $dbh->do( $sql );

&disconnect();
pktm
 2006-07-25 14:57
#8464 #8464
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Die Leerzeichen zwischen den Feldnamen und den dazugehörigen Werten und dass die Wertie nicht in Gänsefüschen stehen.
Bspl:
SET Nachricht="$nachricht",

Besser ist es übrigens für die Werte Platzhalter zu benutzen und diese dann beim do zu übergeben. So werden die nämlich auch direkt gequotet.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Danwe
 2006-07-25 15:33
#8465 #8465
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Das mit den Platzhaltern habe ich bei etwas anderem so gemacht, weis aber nicht ganz genau wie ich das in diesem Fall angehen müsst.

Dankt für die Hilfe, ich probiere es mal aus.\n\n

<!--EDIT|Danwe|1153827251-->
MartinR
 2006-07-25 15:43
#8466 #8466
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Ich mach's so

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my $sql_query = <<"_EOF";
UPDATE
gaestebuch
SET
Nachricht = ?,
Name = ?,
Wohnort = ?,
Homepage = ?,
Titel = ?
_EOF

my $sth = $dbh->prepare( $sql_query );
$sth->execute( $nachricht, $name, $wohnort, $homepage, $titel );
renee
 2006-07-25 16:30
#8467 #8467
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man kann es auch bei do machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $sql_query = <<"_EOF";
UPDATE
gaestebuch
SET
Nachricht = ?,
Name = ?,
Wohnort = ?,
Homepage = ?,
Titel = ?
_EOF

$dbh->do($sql_query,undef, $nachricht, $name, $wohnort, $homepage, $titel );


Wichtig ist das undef nach dem SQL-Statement.\n\n

<!--EDIT|renee|1153834832-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2006-07-25 17:25
#8468 #8468
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
[quote=renee,25.07.2006, 14:30]Man kann es auch bei do machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $sql_query = <<"_EOF";
   UPDATE
       gaestebuch
   SET
       Nachricht = ?,
       Name = ?,
       Wohnort = ?,
       Homepage = ?,
       Titel = ?
_EOF

$dbh->execute($sql_query,undef, $nachricht, $name, $wohnort, $homepage, $titel );


Wichtig ist das undef nach dem SQL-Statement.[/quote]
Dann soll dein execute wohl auch ein do() sein?
http://www.intergastro-service.de (mein erstes CMS :) )
Danwe
 2006-07-25 17:30
#8469 #8469
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
Hey danke Leute! martinR &´s Weg funktioniert, renee, deiner leider nicht, hier hat er irgendein Problem mit dem execute!?
Aber das andere funktioniert ja auch :-)

Jetzt habe ich mein Gästebuch eindlich so ziehmlich zu Ende gebracht :-)
renee
 2006-07-25 17:37
#8470 #8470
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Sollte ein do sein. Deswegen hatte ich in Dem Text hatte ich ja auch von do gesprochen. Mist wenn man bei Copy&Paste dann die Hälfte vergisst abzuändern!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Danwe
 2006-07-26 12:36
#8471 #8471
User since
2006-06-09
76 Artikel
BenutzerIn
[default_avatar]
[quote=renee,25.07.2006, 15:37]Sollte ein do sein. Deswegen hatte ich in Dem Text hatte ich ja auch von do gesprochen. Mist wenn man bei Copy&Paste dann die Hälfte vergisst abzuändern![/quote]
Verstehe nicht ganz wie du das meinst, was ich noch ändern muss?
Das do ist doch schon drinnen, bzw was meinst du mit "mank kann es auch bei do machen" ?\n\n

<!--EDIT|Danwe|1153903021-->
renee
 2006-07-26 17:36
#8472 #8472
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich hatte in meinem geposteten Code erst execute() statt do() gehabt. Das hat dan natürlich nicht funktioniert wie pktm angemerkt hat. Ich habe es nach dem Hinweis von pktm in meinem Code angepasst!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 10 Einträge, 1 Seite



View all threads created 2006-07-25 14:52.