Font
[thread]3366[/thread]

Syntax-Problem: mal wieder...

Reader: 1


<< |< 1 2 >| >> 11 entries, 2 pages
pktm
 2003-10-22 01:11
#35624 #35624
User since
2003-08-07
2921 articles
BenutzerIn
[Homepage]
user image
Hallo!
Ich habe folgende Anweisung:
my $statement2 = "UPDATE $table SET uniq = $uniq WHERE name = $hash_ref->{name}";
Davon erhalte ich beim Aufruf
Code: (dl )
1
2
3
        my $statement2 = "UPDATE $table SET uniq = $uniq WHERE name = $hash_ref->{name}";
$sth = $dbh->prepare( $statement2 );
unless( $sth->execute() ){ die main::writeDbhError("Fehler bei: $statement2"); }

den Fehler:
Quote
[Tue Oct 21 23:15:16 2003] login.cgi: Fehler bei: UPDATE spieler SET uniq = 0PT382415771484375 WHERE name = pktm:
[Tue Oct 21 23:15:16 2003] login.cgi: 1054 (Unknown column 'pktm' in 'where clause')
[Tue Oct 21 23:15:16 2003] login.cgi: 1 at login.cgi line 125.


Wie muss ich das denn schreiben, damit ich nicht zu diesem Fehler komme?
Kann man das nicht irgendwie mit $dbh->quote() machen? (wurde aus der Manpage leider nicht sehr schlau.

Muss ich das denn überhaupt mit UPDATE machen?
Und zwar muss ich einfach den Wert oben überschreiben.
Geht das nicht auch einfacher mit INSERT?
Wo soll der Unterschied sein?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Strat
 2003-10-22 03:15
#35625 #35625
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
es muss immer heissen:
... WHERE name = 'irgendwas'
also
name = '$hash_ref->{name}'

oder wenn es such um eine Benutzereingabe handelt, besser:
Code: (dl )
1
2
my $statement2 = "UPDATE $table SET uniq = '$uniq' WHERE name = " .
$dbh->quote($hash_ref->{name});

vielleicht ebenso bei '$uniq'

denn was passiert, wenn $hash_ref->{name} z.B. folgenden Wert hat?
martin' OR name LIKE '%\n\n

<!--EDIT|Strat|1066778213-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2003-10-22 10:38
#35626 #35626
User since
2003-08-07
2921 articles
BenutzerIn
[Homepage]
user image
Ah, gut, danke, daran lags.
Jetzt muss ich nurnoch herausfinden, wieso das Ding nicht ausgeführt wird...
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2003-10-22 12:09
#35627 #35627
User since
2003-08-04
14367 articles
ModeratorIn
[Homepage] [default_avatar]
mach mal statt prepare und execute einfach ein $dbh->do($statement)...\n\n

<!--EDIT|renee|1066810220-->
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/
Strat
 2003-10-22 15:54
#35628 #35628
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
das habe ich uebersehen... :(

prepare -> execute ist nur zum lesen von daten (select)
do ist fuer den ganzen rest (insert, update, delete, lock, ...)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pktm
 2003-10-22 16:26
#35629 #35629
User since
2003-08-07
2921 articles
BenutzerIn
[Homepage]
user image
Ah, gut zu wissen :)
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2003-10-22 21:05
#35630 #35630
User since
2003-08-07
2921 articles
BenutzerIn
[Homepage]
user image
Und es will einfach nicht gehen :angry:
Code: (dl )
1
2
3
4
        $uniq = rand(1);
$uniq =~ s/\./PT/g;
my $statement2 = "UPDATE $table SET uniq='$uniq' WHERE name='$hash_ref->{name}'";
unless( print $dbh->do( $statement2 ) ){ die main::writeDbhError("Fehler beim Setzen von uniq: $statement2"); }

Als Rückmeldung erhalte ich 0E0, (der aktuelle Wert in der DB ist 0).
Der Wert in der Tabelle ändert sich nicht...
Sieht wer den Fehler?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2003-10-22 21:12
#35631 #35631
User since
2003-08-04
14367 articles
ModeratorIn
[Homepage] [default_avatar]
Welchen Datentyp hat uniq??
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
 2003-10-22 23:51
#35632 #35632
User since
2003-08-07
2921 articles
BenutzerIn
[Homepage]
user image
int(14), die Zahl müsste also genau reinpassen.
http://www.intergastro-service.de (mein erstes CMS :) )
jan10001
 2003-10-23 00:07
#35633 #35633
User since
2003-08-14
962 articles
BenutzerIn
[default_avatar]
In deinen ersten Posting steht:
Quote
Fehler bei: UPDATE spieler SET uniq = 0PT382415771484375 WHERE name = pktm
Ich denke mal das 0PT wird stören, denn in bei INT sind nur Zahlen erlaubt.
<< |< 1 2 >| >> 11 entries, 2 pages



View all threads created 2003-10-22 01:11.