gib die Anzahl der Zeilen mit pdo
Habe ich eine einfache pdo vorbereitete Abfrage:
$result = $db->prepare("select id, course from coursescompleted where person=:p");
$result ->bindParam(':p', $q, PDO::PARAM_INT);
$result->execute();
$rows = $result->fetch(PDO::FETCH_NUM);
echo $rows[0];
den echo zu sein scheint, die Rückkehr der ID-Wert des Datensatzes, nicht die Anzahl der Datensätze von der Abfrage zurückgegeben?
jede Idee oder Erklärung dafür?
InformationsquelleAutor Smudger | 2012-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
PDO::FETCH_NUM: gibt ein array indiziert durch die Anzahl Spalten zurückgegeben, die in Ihrer Ergebnismenge, beginnend bei Spalte 0
Nicht Sie das abrufen der Zeilen-zählen überhaupt.
Diese Abfrage zurückgeben würde insgesamt Zeilen in
$rows[0];
EDIT:
Bitte sehen @ray ' s Antwort. mit
count(id)
ist besser alscount(*)
für InnoDB.Konnte man row-count in der folgenden Art und Weise, aus Ihrer früheren Abfrage.
Aber seien Sie gewarnt:
Dokumentation
while($row = $result->fetch(PDO::FETCH_ASSOC))
wie könnte ich accomplich beide mit einer einzigen mysql-Abfrage oder brauche ich zwei für jede Funktion? Nochmals vielen Dank.Ich bin mir nicht sicher. Sie könnten versuchen
$row_count = $result->rowCount();
mit Ihrem alten Abfrage? Einige berichten, dass PDO_MySQL-Treiber ermöglicht es, dass die Arbeit, trotz der Unterlagen sagen etwas anderes.Wenn das nicht funktioniert, denke ich, könntest du noch die Anzahl der Zeilen in PHP, wie Sie Durchlaufen und die Zeilen, in
fetch
. Nicht sicher, wie schlimm das ist wenn.Funktioniert Super, danke!
Sie sagten, Sie seien mit den Inhalten der Abfrage auch, bedeutet das, dass Sie jetzt run 2 Abfragen, eine für die Zeilenanzahl und eine für die eigentlichen Daten?
InformationsquelleAutor Anirudh Ramanathan
Dem ausführen einer Abfrage, die Zeilen zurückgibt, aus der Datenbank geholt, die erste Zeile aus dem Ergebnis in eine variable und echo würde die erste Spalte der Zeile.
Wenn Sie zählen möchten, machen Sie ein SQL count()
InformationsquelleAutor Stephen
Vorausgesetzt
id
ist der Primärschlüssel verwenden:Vermeiden, count(*). Wenn Sie Ihre Speicher-engine ist InnoDB (eventuell andere außer MyIsam) werden Sie einen performance-hit.
Ich bin mir sicher. MyISAM tun können, count() und count(id) falls id ist eine PK in der gleichen Zeit (memory-Tabellen sind auch gut mit count()'s), aber wenn Ihre Tabelle ist Innodb-Speicher-engine, die Sie Schießen sind den Fuß: mysqlperformanceblog.com/2006/12/01/count-for-innodb-tables
InformationsquelleAutor Ray
Versuchen
echo count($rows);
als$rows
ist ein array.Edit:
Nutzung der Ergebnisse
Das ist, was die Frage ist, zu Fragen, "das echo scheint zu sein, die Rückgabe der ID-Wert des Datensatzes,
not the number of records returned
von der Abfrage?"Obwohl ich vermute, dass es nicht so aussieht, wie er tatsächlich braucht die Abfrage Inhalte, damit eine SQL -
count()
vorzuziehen ist.die Anzahl der zurückgegebenen Datensätze !== die Anzahl der Spalten in jedem Datensatz.
Klingt wie Sie könnte einfach die Abfrage ausführen in der Regel verwenden Sie die
count($rows)
um zu sehen, wenn es nichts gefunden, ich werde zu erweitern Antwort ein wenig.InformationsquelleAutor Martin Lyne
Können Sie diese
Diese manchmal funktioniert nicht auf
SELECT
Abfragen. Aber basierend auf persönlichen Erfahrungen, und da du es nicht erwähnt Portierung auf andere Datenbank-Systeme, sollte es auf MySQL.Mehr Infos im PHP-Handbuch hier
InformationsquelleAutor starleaf1