Schrift
[thread]3356[/thread]

if exist ??

Leser: 2


<< >> 6 Einträge, 1 Seite
Ronaldl
 2003-10-09 22:19
#35434 #35434
User since
2003-09-09
28 Artikel
BenutzerIn
[Homepage] [default_avatar]
wie brige ich denn hier zusätlich die prüfung unter ob der datensatz existiert ? wenn nicht dann fehlermeldung datensatz existiert nicht ??

Code: (dl )
1
2
$sth = $dbh->prepare ("SELECT ArtID, Reihenfolge, ArtNr, ArtGruppe, ArtNGruppe, ArtTitel, ArtText, ArtPreis, ArtMWSt, ArtRabatt, ArtEigenschaften, ArtBildklein, ArtBildgross FROM shop1_artikel_1 WHERE $wo1 LIKE '$buch' '$zu' ");
$sth->execute ();
\n\n

<!--EDIT|Ronaldl|1065723942-->
THX ,bis bald Ronald
Gast Gast
 2003-10-13 18:29
#35435 #35435
[...]

$sth->execute($_) or die print "Couldn't execute statement: $DBI::errstr; stopped";

while (my $ref = $sth->fetchrow_hashref()) { }

if ($sth->rows != "0")
{
print "dataset exists \n";
}
else
{
print "nothing found \n";
}

[...]
Strat
 2003-10-13 21:12
#35436 #35436
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei $sth->prepare(...) wuerde ich auch noch eine fehlerabfrage machen, weil manche datenbanken schon das prepare ueberpruefen (mysql allerdings nicht, glaube ich); geht genauso wie beim execute

die Abfrage if ($sth->rows sollte man besser ausserhalb von while ( ... = $sth->fetchrow->hashref())  machen, weil in der while-schleife eh schon klar ist, dass da ein ergebnis kommt; falls keines waere, wuerde die while-schleife gar nicht ausgefuehrt.

$irgendwas != "0"

du wandelst zuerst die Zahl 0 in die Zeichenkette "0" um und laesst dann von != (numerischer vergleich) wieder in die Zahl
0 um? besser da die "" weglassen:

$irgendwas != 0\n\n

<!--EDIT|Strat|1066065277-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ronaldl
 2003-10-13 21:57
#35437 #35437
User since
2003-09-09
28 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also das Funktioniert bei mir nicht :
Code: (dl )
#$sth->execute($_) or die print "Couldn't execute statement: $DBI::errstr; stopped"; 


So funktioniert es:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sth = $dbh->prepare ("SELECT ArtID, Reihenfolge, ArtNr, ArtGruppe, ArtNGruppe, ArtTitel, ArtText, ArtPreis, ArtMWSt, ArtRabatt, ArtEigenschaften, ArtBildklein, ArtBildgross FROM shop1_artikel_1 WHERE $wo1 LIKE '$buch' '$zu' ");
$sth->execute ();
while (my $ref = $sth->fetchrow_hashref())  {}
if ($sth->rows != 0)  { print "<h4><b><font color='#36C939'>Datensatz wurde gefunden !</font></b></h4>  \n";
 }
else
          {
             suche ();
             print "<font color='#FF0000'><h4><b>Datensatz wurde nicht gefunden, bitte prüfen Sie Ihre eingabe !</b></h4></font>\n";
          }

$sth->execute ();
while (my $ref = $sth->fetchrow_hashref ()){
my %hash = %{$ref};
print start_form (-action => url ()),


zu $sth->Prepare mysql prüft das nicht wie du schon sagtest...

Das mit der  "0" funktiert nur ohne anführungszeichen...

Danke für eure hilfe, aber kann mir mal jemand sagen warum ich das Forum manchmal Tageweise nicht aufrufe kann ? Heute geht es wieder .. ich verbinde mich per T-DSL 1500, spinnt der DTAG DNS oder woran liegt das ?
THX ,bis bald Ronald
Strat
 2003-10-13 22:57
#35438 #35438
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Ronald: Server down

nur weil es funktioniert, heisst es immer noch nicht, dass das $sth->rows innerhalb der while-schleife Sinn macht...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
fboneol
 2003-10-14 13:15
#35439 #35439
User since
2003-09-12
32 Artikel
BenutzerIn
[default_avatar]
$sth->execute($_) ist copy'n paste aus einem meiner scripte ;-)

muss natürlich $sth->execute() heissen.

@strat :
$sth->rows liegt nicht innerhalb der while schleife, denn
die schleife geht nur über eine einzige zeile :
while (my $ref = $sth->fetchrow_hashref()) { }
man beachte die klammern am ende der zeile.

die zeile kann man aber auch weglassen, denke ich. wieder mal copy 'n paste...

das mit der 0 ist natürlich richtig. werde ich gleich mal korrigieren.

cheers,
f.bone
<< >> 6 Einträge, 1 Seite



View all threads created 2003-10-09 22:19.