ergebnis von mysql_fetch_array gezielt abfragen
schubert
- php
Guten Abend,
ich habe eine mysql tabelle die ich mit php abfrage, die abfrage speichere ich in einer variable, diese wiederum also das Ergebnis der Abfrage packe ich in ein Array mittels mysql_fetch_array. In der Tabelle sind drei Zeilen, meine Frage lautet nun wie kann ich z.B auf Atribut B von Zeile 2 direkt zugreifen?
echo $ergebnis[0][1]; ist wohl falsch.
ich komm nur an die erste Zeile ran echo $ergebnis[0];
Hoffe das ist soweit richtig und verständlich.
mfg schubert;
Hello,
ich komm nur an die erste Zeile ran echo $ergebnis[0];
jup, weil du einem Irrglaube aufsitzt was die Funktion von mysql_fetch_array angehst - siehe ersten Satz: "einen Datensatz". Du musst es wiederholt aufrufen um alle Datensätze zu bekommen.
MfG
Rouven
Hi,
ok mit einer while schleife könnte ich das ergebnis wohl durchlaufen.
Ich versuche zeile für zeile etwas zu berechnen und danach die Ergebnisse nach Reinfolge auszugeben, also das niedrigste zuerst.
$ingrit = array();
while($veras = mysql_fetch_array($abfrag))
{
$ver = $veras[1] + $veras[2];
$ingrit.$ver; // hier versuche ich das Ergebnis einem Array anzuhängen, ist das irgendwie mit dem punkt möglich
echo $ver;
}
echo $ingrit[1];
mfg schubert;
Hello,
Du kannst Deine Variablen so nennen wie Du willst, aber Du solltest sie so benennen, dass jeder, der den Code mal pflegen muss, _sofort_ etwas damit anfangen kann.
Warum führst Du die Berechnnung außerhalb der Datenbank durch?
Ein harzliches Glückauf
Tom vom Berg
Hello,
Du kannst Deine Variablen so nennen wie Du willst, aber Du solltest sie so benennen, dass jeder, der den Code mal pflegen muss, _sofort_ etwas damit anfangen kann.
beim experementieren nenne ich sie irgendwie um, nachher mach ich alles erkennbar.
Warum führst Du die Berechnnung außerhalb der Datenbank durch?
gute Frage, kann ich wohl auch in mysql schon bewerkstelligen, wenn du so fragst.
Ok, wenn ich dann die ergebnisse habe, wie kann ich die nach reinfolge ausgeben?
mfg schubert;
hallo,
mit array_pusch hab ich die ergebnisse einem array hinzugefügt und mit sort sort numeric habe ich die reinfolge sortiert.
danke soweit bis später.
$ingrit = array();
while($veras = mysql_fetch_array($abfrag))
{
$ver = $veras[1] + $veras[2];
array_push($ingrit,$ver);
//echo $ver;
}
sort($ingrit,SORT_NUMERIC);
foreach($ingrit as $low){
echo $low.'<br>';}
mfg schubert;
Moin!
mit array_pusch hab ich die ergebnisse einem array hinzugefügt und mit sort sort numeric habe ich die reinfolge sortiert.
danke soweit bis später.
MySQL kann prima selbst addieren, und es kann auch prima sortieren. Alles das, was du hier suboptimal mit PHP erledigst, könntest du problemlos durch einen passenden SQL-SELECT automatisch erhalten.
- Sven Rautenberg
hallo,
das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.
mfg schubert;
Hello,
das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.
könntest du bitte SELBST im Manual nachschlagen! (+ / ORDER BY)
MfG
Rouven
hallo,
is ja geil, man kann ja einfach drauf los rechnen bei mysql.
cool, werd ich was draus machen.
danke soweit.
mfg schubert;
Hello,
das hört sich ganz gut an, könntest du mir bitte die wichtigsten Befehle dazu nennen.
Eine Funktionsübersicht findest Du hier:
http://dev.mysql.com/doc/refman/5.0/en/func-op-summary-ref.html
Ein harzliches Glückauf
Tom vom Berg
Hello (Schu)Bert, :-)
ich habe eine mysql tabelle die ich mit php abfrage, die abfrage speichere ich in einer variable, diese wiederum also das Ergebnis der Abfrage packe ich in ein Array mittels mysql_fetch_array. In der Tabelle sind drei Zeilen, meine Frage lautet nun wie kann ich z.B auf Atribut B von Zeile 2 direkt zugreifen?
Das sieht zwar so aus, als würdest Du es so tun, aber da passiert vermutlich etwas anderes:
Du fragst das MySQL Datenbanksysteme mit einem "Query-String" ab.
Dabei greifst Du dann auf Deine Tabelle zu.
Das Abfrageergebnis wird von MySQL in einem Transfer-Buffer gespeichert.
PHP holt es aus diesem heraus und legt es unter einem Handle in einem Speicherbereich außerhalb des PHP-Speichers ab (also noch im Bereich der DB).
Du fragst nun unter Verwendung dieses Handles und einer speziellen Funktion, nämlich in Deinem Fall
$_record = mysql_fetch_array($handle);
jeweils den aktuell anstehenden Datensatz (die Zeile) des "Resultsets" ab.
Der Datensatzzeiger rutscht danach automatisch auf die nächste Zeile.
In Deinem $_record steht also immer nur der eine eben gerade abgefragte Datensatz.
Auf dessen Elemente kannst Du zugreifen, wie auf jedes PHP-Array
echo htmlspecialchars(print_r($_record,1));
würde Dir diesen einen Satz HTML-konform auf die Standarsausgabe befördern.
Wenn Du nun aus dem Resultset direkt ein spezielles Element haben willst, ohne vorher alle Zeilen ins den Speicherbereich des PHP-Scriptes zu übernehmen, musst Du eine andere Funktion verwenden
Du könntest den Satzzeiger z.B. gezielt auf einen Datensatz einstellen
http://de3.php.net/manual/de/function.mysql-data-seek.php
und dann mittels mysql_fetch_assoc() die ganze Zeile auslesen.
Dabei Wird der Datensatzeiger natürlich auch wieder einen Satz weiter bewegt.
Um alle Zeilen ins PHP-Scope zu übernehmen, kannst Du eine Schleife laufen lassen:
$res = mysql_query($sql, $con);
$_resulttable = array();
if ($res)
{
while( $_record = mysql_fetch_assoc($res))
{
$_resulttable[] = $_record;
}
}
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_resulttable,1));
echo "</pre>\r\n";
Den Rest müsstest Du dann selber hinbekommen.
Außerdem solltest Du Dein SQL-Query immer so gestaslten, dass Du keine nutzlosen Ergebnisse bekommst, also nur soviel aus der Datenbank abfragen, wie auch verwertet wird.
Ein harzliches Glückauf
Tom vom Berg