array zeiger durchwandern nach mysql-query()?
joebo
- php
hallo,
ich habe folgendes problem!
ich ahbe ien klasse die ein methode hat welche eine datenbank abfrage beinhaltet.
function getDb($user_id, $box)
{
$anfrage= "SELECT * FROM Tabelle";
$db_id= mysql_query($anfrage);
$return_values= mysql_fetch_array($db_id);
return $return_values;
}
wie kann ich nun den rückgabewert $return_values mit einer schleife abarbeiten. while macht eine endlosschleife und durchwandert nur den ersten zeiger. und foreach macht auch nichts!
wie funktioniert das?
joebo
Moin ,
function getDb($user_id, $box)
{
$anfrage= "SELECT * FROM Tabelle";
$db_id= mysql_query($anfrage);
$return_values= mysql_fetch_array($db_id);
return $return_values;
}
mit MSSQL sollte be My genauso oder zumindest ähnlich sein:
while ( $result0=mssql_fetch_array($return_values))
Gruß
Mike
function getDb($user_id, $box)
{
$anfrage= "SELECT * FROM Tabelle";
$db_id= mysql_query($anfrage);
$return_values= mysql_fetch_array($db_id);
return $return_values;
}
mit MSSQL sollte be My genauso oder zumindest ähnlich sein:
while ( $result0=mssql_fetch_array($return_values))
danke für die antwort jedoch wirst du sehn das ich bereits die DB kennung in ein array gepackt habe!
$return_values= mysql_fetch_array($db_id);
hi,
ich ahbe ien klasse die ein methode hat welche eine datenbank abfrage beinhaltet.
diese funktionalität endet hier:
function getDb($user_id, $box)
{
$anfrage= "SELECT * FROM Tabelle";
$db_id= mysql_query($anfrage);
(ggf. noch fehlerhandlinh implementieren.)
das, was danach kommt
$return_values= mysql_fetch_array($db_id);
return $return_values;
gehört schon gar nicht mehr zur datenbank-abfrage, sondern ist bereits ein teil der auswertung der ergebnismenge - gehört als in eine klasse mit der von dir oben gegebenen funtkionsbeschreibung schon gar nicht mehr hinein.
wie kann ich nun den rückgabewert $return_values mit einer schleife abarbeiten. while macht eine endlosschleife und durchwandert nur den ersten zeiger. und foreach macht auch nichts!
warum nimmst du nicht einfach die ressource-id, die dir mysql_query() zurückliefert, als rückgabewert?
gruß,
wahsaga
ich habe bereits veruscht id eressource_ID als rückgabewert zu verwenden, jedoch ist jene nicht mehr vorhanden!
bricht die DB connection nach dem beenden der methode ab?
joe
hi,
ich habe bereits veruscht id eressource_ID als rückgabewert zu verwenden, jedoch ist jene nicht mehr vorhanden!
hast du den returnwert auch beim aufrufen der funktion in empfang genommen, oder lässt du die rückgabe im datennirwana versickern? (beliebter anfänger-fehler)
bricht die DB connection nach dem beenden der methode ab?
nein, nicht das ich wüsste.
gruß,
wahsaga
hast du den returnwert auch beim aufrufen der funktion in empfang genommen, oder lässt du die rückgabe im datennirwana versickern? (beliebter anfänger-fehler)
jaja hab ich natürlich
$output= $datenbank->getdb();
und da setzt es an! was mach ich nun mit
$output?
foreach ($output as $blabla)
geht nicht!
while ($output)
geht nicht weil alle auf dem ersten zeiger hängen bleiben!
jaja hab ich natürlich
$output= $datenbank->getdb();
und da setzt es an! was mach ich nun mit
$output?foreach ($output as $blabla)
geht nicht!
while ($output)
geht nicht weil alle auf dem ersten zeiger hängen bleiben!
Wie sieht denn das Array aus ( print_r($output) )?
geht nicht weil alle auf dem ersten zeiger hängen bleiben!
Wie sieht denn das Array aus ( print_r($output) )?
auch mit print_r bekomm ich ja immer nur die werte des ersten zeigers! und des problem ist, dass ich alle durchwandern möchte!!!
geht nicht weil alle auf dem ersten zeiger hängen bleiben!
Wie sieht denn das Array aus ( print_r($output) )?
auch mit print_r bekomm ich ja immer nur die werte des ersten zeigers! und des problem ist, dass ich alle durchwandern möchte!!!
Du bekommst in deiner Funktion "getDb" auch nur den ersten Datensatz zurück. Änder die Funktion mal in folgendes:
function getDb($user_id, $box)
{
$anfrage= "SELECT * FROM Tabelle";
$db_id= mysql_query($anfrage);
$return_values = array ();
while ( $_result = mysql_fetch_array($db_id) )
array_push ( $return_values, $_result );
return $return_values;
}
Nun müßte print_r ($output) alle Daten ausgeben und ein foreach ($output) geht den ganzen Array durch.
Hello,
Wie sieht denn das Array aus ( print_r($output) )?
Wird da übrhaupt etwas angezeigt? $output ist ja ein Ressource-Handle und nicht die Adresse eines Arrays. Für Ressource-Handles benötigt man natürlich die dazu passenden Handle-Funktionen.
Wenn man Dateien öffnet mit $fh = fopen(...) dann kan man ja auch nicht mit print_r($fh) die datei ausgeben. Man muss sie erst mit der zum handle passenden Funktion auslesen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Wie sieht denn das Array aus ( print_r($output) )?
Wird da übrhaupt etwas angezeigt? $output ist ja ein Ressource-Handle und nicht die Adresse eines Arrays. Für Ressource-Handles benötigt man natürlich die dazu passenden Handle-Funktionen.
$output enthält ja den Rückgabewert von mysql_fetch_array(). Und das liefert einen Array (oder false) zurück.
Hello,
Wie sieht denn das Array aus ( print_r($output) )?
Wird da übrhaupt etwas angezeigt? $output ist ja ein Ressource-Handle und nicht die Adresse eines Arrays. Für Ressource-Handles benötigt man natürlich die dazu passenden Handle-Funktionen.
$output enthält ja den Rückgabewert von mysql_fetch_array(). Und das liefert einen Array (oder false) zurück.
Ich hatte das in den Kontext von wahsagas Tipp gesetzt:
function getDb($user_id, $box)
{
$anfrage = "SELECT * FROM Tabelle";
$res = mysql_query($anfrage);
return $res;
}
Und bitte nochmal die drei Zeilen von mir dahinter:
$_liste = array()
while($_liste[] = mysql_fetch_assoc($output));
mysql_free_result($output);
Und dann klappts auch.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
hast du den returnwert auch beim aufrufen der funktion in empfang genommen, oder lässt du die rückgabe im datennirwana versickern? (beliebter anfänger-fehler)
jaja hab ich natürlich
$output= $datenbank->getdb();
und da setzt es an! was mach ich nun mit
$output?foreach ($output as $blabla)
geht nicht!
while ($output)
geht nicht weil alle auf dem ersten zeiger hängen bleiben!
$_liste = array()
while($_liste[] = mysql_fetch_assoc($output));
mysql_free_result($output);
Das gesamte Resultset wir so ab der Position des Resultsetzeigers bis zum Ende in das (zweidimensionale) Array $_liste übertragen.
Das Resultset kann danach freigegeben werden.
In jedem Element von $_liste steht nun also ein Datensatz, der wiederum aus den abgefragten Feldern besteht.
Liebe Grüße aus http://www.braunschweig.de
Tom
wie kann ich nun den rückgabewert $return_values mit einer schleife abarbeiten. while macht eine endlosschleife und durchwandert nur den ersten zeiger. und foreach macht auch nichts!
wie funktioniert das?
Hallo!
Wenn ich dich richtig verstehe, dann willst du doch nur das Array $return_values durcharbeiten.
Erstmal kannst du mit mysql_fetch_array($id,MYSQL_ASSOC) oder entsprechend mysql_fetch_array($id,MYSQL_NUM) angeben, ob du ein assoziatives oder ein numerischer Array willst.
(vgl. http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_fetch_array.php)
Im Fall, dass du ein assoziatives Array willst, nehme ich immer folgendes Vorgehen:
$keys = array_keys($return_values);
for ($i=0; $i<count($keys); $i++) {
tu_etwas_mit($return_values[$keys[$i]]);
}
war das die richtige Antwort?
ob es die richtige antwort ist weis sich noch nicht.
aber auf alle fälle hilft es mir sehr weiter!!! danke joe