/ / Wie bekomme ich die richtige Anzahl von Spalten von mysql_fetch_array ()? - PHP, MySQL, Arrays

Wie bekomme ich die richtige Anzahl von Spalten von mysql_fetch_array ()? - PHP, MySQL, Arrays

Hier ist eine Zeile meines Codes

while($row = mysql_fetch_array($result))

Ich möchte herausfinden, wie viele Spalten in der Zeile stehen. Ich habe es versucht count($row) aber das ergab, was ich denke, ist die Anzahl der Zellen für die gesamten $ Ergebnisse.

d.h. es gibt tatsächlich 7 Spalten und 2 Zeilen und count($row) 14. Ich möchte eine Funktion, die 7 zurückgibt.

Kannst du sehen, wo ich falsch liege?

Danke im Voraus.

BEARBEITEN - Antwort gefunden

Bestanden MYSQL_NUM als zweiter Parameter zu mysql_fetch_array.
Danke trotzdem an alle Antworten.

Antworten:

2 für die Antwort № 1

Wenn Sie verwenden mysql_fetch_array In jeder Zeile werden die Spalten doppelt, einmal nach Spaltennummer und einmal nach Spaltenname indiziert. Damit count($row) wird die doppelte Anzahl der Spalten sein.

Benutzen mysql_fetch_row wenn Sie nur numerische Indizes möchten, und mysql_fetch_assoc wenn Sie Namensindizes wollen. Diese Funktionen geben beide Zeilen mit 7 Einträgen zurück.


3 für die Antwort № 2

PHP hat eine Funktion, die die Anzahl der Spalten zurückgibt:

mysql_num_fields($result)

Wie die anderen Antworten sagen, werden Sie doppelt gezählt, weil mysql_fetch_array() gibt sowohl assoziative Schlüssel (nach Spaltenname) als auch numerische Schlüssel zurück. Ich würde stattdessen die obige Funktion verwenden, ungeachtet dessen, was ich verwende, um meine Zeilen zu holen.


2 für die Antwort № 3

mysql_fetch_array() Gibt die Zeile als ein kombiniertes Array von numerischen Indizes und assoziativen Schlüsseln zurück. Deshalb bekommst du 14 statt 7.

Benutzen mysql_fetch_row() stattdessen, um nur die nächste Zeile als numerischen Index zu erhalten. Oder mysql_fetch_assoc() um es mit assoziativen Schlüsseln zu bekommen. Ändern zu einem wird verursachen count($row) zurückgeben

Bearbeiten Ich sagte ursprünglich mysql_fetch_array() gibt das gesamte Ergebnis zurück. Ich habe das korrigiert. Der Punkt steht immer noch: Die Verwendung einer der anderen Funktionen, die ich erwähnt habe, wird das Problem beheben.