SQL - Query Ausgabe gibt mehrere Zeile aus -> Ausgabe soll nur 1 Zeile zurück geben

Briefkasten

Erfahrenes Mitglied
Hallo,

die SQL Query:

PHP:
SELECT     id FROM         doc_desc ORDER BY id

Gibt mir folgende Tabelle aus:

id
1
2
4

Nun kann ich mit mssql_fetch_array nur auf die erste Zeile darauf zugreifen. Ich möchte aber auf alle Zeilen darauf zugreifen können.

Nun such ich ein SQL Statment mit der ich folgende ausgabe erhalte:

id id#2 id#3
1 2 4

Somit könnte ich mit mssql_fetch_array wie gewohnt auf das ergebniss zugreifen. Weiß jemand wie ich das mache?

mfg Briefkasten
 
Ich kann dir nur einen Gedankenanstoß mit mysql und php geben
PHP:
$sql = "SELECT `id` FROM `doc_desc` ORDER BY id";
$result = mysql_query ( $sql );
while ( $row = mysql_fetch_array ( $result ) )
{
  // inhalt
}

Tobee
 
Hi,

das Problem ist das ich hier mssql_fetch_array (es gibt keinen unterschied zwischen mysql_fetch_array oder mssql_fetch_array bis auf den verwendeten Dbserver) nicht verwenden kann.

row gibt bei var_dump() folgendes aus:

array(2) { [0]=> int(1) ["id"]=> int(1) }

Das liegt daran, dass bei mssql_fetch_array() ein Array zurück gegeben wird in dem die erste Zeile gespeichert ist mit allen dazugehörigen Spalten.
$row[0] wäre die erste Spalte also id
Auf $row[1] bekomme ich, dann logischerweise die Meldung unknow offset. da ja keine 2te spalte laut sql query ($sql = "SELECT `id` FROM `doc_desc` ORDER BY id"; ) vorhanden ist.
(1spalte 3 zeilen)

Deshalb möchte ich gerne mit sql die Tabellenzeilen auf eine "zusammenlegen" damit ich, dann über die Spalten bzw. mssql_fetch_array darauf zugreifen kann.
 
PHP:
$sql = "SELECT `id` FROM `doc_desc` ORDER BY id"; 
$result = mysql_query ( $sql ); 
while ( $row = mysql_fetch_array ( $result ) ) 
{ 
  $ids[] = $row[0]; 
}
So hast du alle id's in einem Array. Wenn ich dich richtig verstanden habe?

Tobee
 
Hallo,

danke tobee. Allerdings versteh ich nicht ganz......wo mein Denkfehler ist. Werde es mir nochmal genauer anschauen. Falls ich das richtig verstanden habe ist in dem Array $orw[0] wieder ein Array.

Danke
 
Zuletzt bearbeitet:
Hallo,

row[0] enthält selbst kein array, aus diesem Grund kannst du dir, wie von Tobee vorgschlagen ein Array erzeugen, in dem du alle Zeilen der Tabelle per Fetch und While-Schleife in eines einliest.
Die Funktion mssql_fetch_array lädt immer nur "eine" Zeile einer Tabelle in ein Array.

Tabelle X (Spalte1,Spalte2,....,Spalte n)

Per mssql_fetch_array erhälst du das Array row mit:

Row[0]=Spalte1, Row[1]=Spalte 2, ... , Row[n-1]=Spalte n

und zwar jeweils immer den Inhalt der aktuellen Zeile.

In deinem Fall besteht die Tabelle nur aus einer Spalte (ID) somit auch das Array row nur aus einem Element.
Jedes Element des Array enthält immer nur den Inhalt der aktuell gefetchten Zeile, per Fetch holst du dir dann dann jeweils die nächste Zeile.

Es gibt je nach DB System aber auch Funktionen, die dir zu einer Spalte ein Array fetchen können.

Gruss
 
Zurück