dedlfix: Anzahl der Datensätze ausgeben

Beitrag lesen

Hi!

Die Syntax für die Zählung der Datensätze lautet: SELECT COUNT(*) FROM ...
OK, das habe ich geändert. Der Code lautet jetzt:
  $statement='SELECT COUNT vorname FROM 11\_dbtest WHERE vorname="Hans"';

Ich schrieb: SELECT COUNT Klammer auf, Stern, Klamer zu FROM ...
COUNT() ist eine Funktion. Ob man da * oder einen Spaltennamen angibt, kann das Ergebnis beeinflussen. Bei * werden alle Datensätze gezählt, bei einem Spaltennamen nur die Datensätze, die keinen NULL-Wert in der Spalte haben. Auf alle Fälle braucht es da aber die Klammern.

<?php

include('db_connect.php');
  $statement='SELECT COUNT vorname FROM 11_dbtest WHERE vorname="Hans"';
  $result=$db->query($statement);
  include('db_disconnect.php');
  echo"<p>Insgesamt befinden sich ".$result." Datensätze in der Datenbank.</p>\n";
?>


>   
> Jetzt kommt keine Fehlermeldung und kein Hinweis mehr, allerdings auch kein Ergebnis.  
  
Ja, und was steht in $result drin? Lass dir den Inhalt mit var\_dump() anzeigen. Du siehst dann nämlich ein false, was wieder auf einen Fehler hindeutet. In der anschließenden Ausgabe siehst du nichts, weil das false im String-Kontext zu einem Leerstring wird. In $result ist aber auch im Gutfall noch nicht dein Zählergebnis drin, sondern ein mysqli\_result-Objekt, das erst noch per Fetch nach dem einen enthaltenen Datensatz befragt werden muss.  
  

> Was fehlt mir denn noch im Programmcode? Oder hab ich noch immer was falsch?  
  
Eine Fehlerbehandlung! Und die Lektüre von Grundlagenliteratur.  
  
Im PHP-Handbuch findest du unter der Beschreibung des [Konstruktors von mysqli](http://de.php.net/manual/en/mysqli.connect.php) ein Beispiel zum Abfangen von Fehlern beim Verbindungsaufbau. Bei [mysqli::query()](http://de.php.net/manual/en/mysqli.query.php) findet sich wenigstens angedeutet eine Reaktion auf Fehler bei dessen Ausführung. Unter [mysqli_result::fetch_assoc()](http://de.php.net/manual/en/mysqli-result.fetch-assoc.php) und den anderen Fetch-Funktionen wird gezeigt, wie man Ergebnisse abholt - ebenfalls mit angedeuteter Fehlerbehandlung. Angedeutet ist sie deshalb, weil kein else-Zweig für den Fehlerfall zu sehen ist. Man sieht aber, dass das Ergebnis nur im Gutfall weiterverarbeitet wird. Und [mysqli::error](http://de.php.net/manual/en/mysqli.error.php) zeigt, wie man sich die Fehlermeldungen vom MySQL-Server abholt. Da ist allerdings die Logik bei mysqli::query() negiert, weil man da nur die Fehlermeldung zeigen will und keine vollständige Datenabfrage.  
  
  
Lo!