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 COUNTvorname
FROM11\_dbtest
WHEREvorname
="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 COUNTvorname
FROM11_dbtest
WHEREvorname
="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!