MySQL / Perl - Unterschied count(*) und $sth->rows()
Nebula
- datenbank
0 Vinzenz
moin, moin!
Kennt jemand den Unterschied zwischen diesen Methoden
herauszufinden wieviele Ergebnisse die MySQL Abfrage brachte?
Sollte man eine der beiden bevorzugen oder ist das nur
auf den ersten Blick das selbe und eine der beiden grenzt sich automatisch aus?
my $dbh = DBI->connect('DBI:mysql:database=foobar;host=localhost', 'nebula', 'tonna');
my $foo = $dbh->selectrow_hashref("SELECT COUNT(*) as count FROM freunde WHERE name LIKE 'A%'");
print $foo->{'count'}."<br>\n";
my $dbh = DBI->connect('DBI:mysql:database=foobar;host=localhost', 'nebula', 'tonna');
my $sth = $dbh->prepare("select * from freunde where name LIKE 'A%'");
$sth->execute();
print $sth->rows()."<br>";
Beide Varianten geben die Zahl 3 retour.
3 heißt in dem Fall "3 Ergebnisse gefunden"
Welche der beiden Varianten ist besser oder richtiger
oder was sollte ich dazu wissen?
Es grüßt
Nebula
Hallo Nebula,
Kennt jemand den Unterschied zwischen diesen Methoden
herauszufinden wieviele Ergebnisse die MySQL Abfrage brachte?
Sollte man eine der beiden bevorzugen oder ist das nur
auf den ersten Blick das selbe und eine der beiden grenzt sich automatisch aus?
Dein Perl-Ergebnis mag das gleiche sein. Aber was willst Du wirklich wissen:
Wieviele Datensätze enthält die Tebelle Freunde, bei denen der Name mit A beginnt? Wenn ja, wähle 1).
Willst Du mit den Datensätzen weiteres anfangen, dann wähle 2)
- my $dbh = DBI->connect('DBI:mysql:database=foobar;host=localhost', 'nebula', 'tonna');
my $foo = $dbh->selectrow_hashref("SELECT COUNT(*) as count FROM freunde WHERE name LIKE 'A%'");
Hier liefert die Abfrage genau einen Datensatz mit einer Spalte zurück. Die Netzwerkbelastung bleibt klein.
- my $dbh = DBI->connect('DBI:mysql:database=foobar;host=localhost', 'nebula', 'tonna');
Hier wandern definitiv viel mehr Daten über die Leitung als in Fall 1). Tu dies nur, wenn Du mit den Daten auch arbeiten willst.
Beide Varianten geben die Zahl 3 retour.
3 heißt in dem Fall "3 Ergebnisse gefunden"Welche der beiden Varianten ist besser oder richtiger
oder was sollte ich dazu wissen?
Es sind zwei grundverschiedene Abfragen. Und Du solltest wissen, dass Du in Fall 2 lieber nur die Spalten auswählst, die Du benötigst.
Freundliche Grüsse,
Vinzenz