Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP/MySQL: Wie wird der Datensatz gespeichert (Formate...)? (https://www.delphipraxis.net/52905-php-mysql-wie-wird-der-datensatz-gespeichert-formate.html)

malo 6. Sep 2005 14:58


PHP/MySQL: Wie wird der Datensatz gespeichert (Formate...)?
 
Hi!

Ich hab mal eine kleine, eher theoretische Frage. Und zwar hab ich einige DB-Datensätze einer MySQL-DB. Ich möchte diese beiden nacheinander auslesen, also immer Feld 1, dann Feld 2, dann in der nächsten Zeile: Feld 1, dann Feld 2. Um das zu machen, fehlt mir aber grade etwas die Theorie, wie genau die Werte in die jeweilige Result-Variable gespeichert wird. Kurz als Beispiel:

Code:
Tabelle a
xy         ab
________________

"a"       "x"
"b"       "y"
"c"       "z"
Das mal als Beispiel, wie die Tabelle in etwa aussieht...

Jetzt könnte ich eine Abfrage machen, wie diese hier:
Code:
$result = mysql_query('SELECT xy FROM a');
Dabei würden in $result drei Werte gespeichert werden: "a", "b" und "c". Aber wie sieht das Format nun genau aus? Kann ich es wie ein Array verwenden? Werden die Datensätze numerisch, also mit Zahlenwerten (0 bis x) gespeichert?


Wär schön, wenn wir da jemand ein paar Auskünfte geben könnte :)

alcaeus 6. Sep 2005 16:28

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
Moin malo,

$result enthaelt die Resource, in der die Daten gespeichert sind. mit den mysql_fetch_*-Funktionen kannst du aus dieser Resource die Datensaetze auslesen. Wie genau das in $result gespeichert wird weiss ich nicht, aber ich denke mal dass der Datensatz irgendwo im Speicher rumliegt, aber mehr kann ich dir auch nicht sagen. Ich habe bis jetzt noch nicht das Beduerfnis verspuert, direkt ueber $result auf die Daten zuzugreifen, ich hab immer die o.g. Funktionen verwendet :zwinker:

Greetz
alcaeus

Pr0g 6. Sep 2005 16:30

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
Nehmen wir folgende Tabelle als Beispiel:
Code:
feld1 | feld2
-------+-------
  a   |  b
  c   |  d
Nun hast du folgende Abfrage:
Code:
$sql = 'SELECT feld1, feld2 FROM mytable';
$query = mysql_query($sql);
In $query ist nun eine Ergebniskennung der Abfrage gespeichert. Diese verweist auf den ersten Datensatz, welche die Abfrage zurückliefern würde. Du kannst aus der Ergebniskennung nun bspw. ein Array machen:
Code:
$row = mysql_fetch_array($query);
In $row steht nun ein Array mit dem ersten Datensatz:
Code:
echo $row['feld1'] . ' - ' . $row['feld2'];
würde folgendes Ergebnis liefern/ausgeben:
Code:
a - b
Nun kannst du
Code:
$row = mysql_fetch_array($query);
erneut aufrufen für den nächsten Datensatz (also c und d), oder es direkt in eine Schleife packen:
Code:
$sql = 'SELECT feld1, feld2 FROM mytable';
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
  echo $row['feld1'] . ' - ' . $row['feld2'];
}
würde dann dies ausgeben:
Code:
a - b
c - d
Im PHP Manual findest du auch noch weiteres zu mysql_query() und mysql_fetch_array().

MfG Pr0g

Aenogym 6. Sep 2005 16:32

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
hi malo,

in $result steht nach aufruf von mysql_query() nur ein integer (wenn du ihn per echo oder so ausgeben würdest).
an dne inhalt des ergebnisses kommst du folgendermaßen:

Code:
$result = mysql_query("SELECT * FROM table");

while ($row = mysql_fetch_array($result)) {
   echo $row["feldname"]
}
mysql_fetch_array() macht aus dem ergebnis ein array. wenn du mit dem oben gezeigten while-konstrukt arbietest, dann läuft die schleife für jede zeile des ergebnisses je einmal durch. innerhalb der schleife kannst du dann die felder der aktuellen zeile über ihre namen ansprechen ($row["feldname"]).
anstatt mysql_fetch_array() kannst du auch mysql_fetch_rows() schreiben, dann kannst du die felder aber nicht über ihre namen, sondern nur über ihre indizes (angefangen bei 0) ansprechen.

wenn du weißt, dass du nur eine zeile im ergebnis zurückgeliefert bekommst, kannst du dir die while-schleife sparen und die felder dieser einen zeile direkt so ansprechen:

Code:
$result = mysql_query("SELECT id, name FROM mytable");

echo mysql_result($result, 0); //gibt den inhalt des ersten feldes aus - zugriff nur über index möglich
weitere informationen gibt's bei PH.netP (Querverweise beachten - die sind nützlich^^)

aenogym

//edit: drei mal hält besser :P

malo 6. Sep 2005 16:44

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
:)

Ich hätte mir das jetzt etwas komplizierter vorgestellt, deshalb diese weit ausholende Frage... aber, naja :mrgreen:

Danke :)

malo 18. Sep 2005 14:11

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
Das Thema nochmal kurz von mir aufgefrischt:

Code:
$result = mysql_query('SELECT id,title FROM ' . $table_prefix . 'index WHERE id="'.$mode['mode'].'"');
  while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
     echo('<div class="headline">' . $row['title'] . "</div>\n");
     echo($row['content']);
    }
Jetzt hab ich das Problem, dass die while-Schleife niemals ausgeführt wird. Weiß grad jemand wieso? $result ist immerhin gesetzt, und hat imho auch den entsprechenden Inhalt... aber $row hat keinen Inhalt. Was muss ich anders machen? :gruebel:

malo 22. Sep 2005 18:48

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
*push* :duck:

Strophi 22. Sep 2005 20:22

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
Zitat:

Jetzt hab ich das Problem, dass die while-Schleife niemals ausgeführt wird. Weiß grad jemand wieso? $result ist immerhin gesetzt, und hat imho auch den entsprechenden Inhalt... aber $row hat keinen Inhalt. Was muss ich anders machen?
Hi,

ist zwar vielleicht das eine oder andere Zeilchen mehr, aber bau' Dir die Abfrage in einen String: $sql="meine query". Und vor dem myql_query erstmal ein echo "meine abfrage: $sql
"?
Oft ist die übergebene query klump... mysql_error() erhellt die Sache auch oft ungemein.

Mit freundlichem gruß

Strophi

malo 11. Okt 2005 12:33

Re: PHP/MySQL: Wie wird der Datensatz gespeichert (Formate..
 
So, hat ein wenig länger gedauert, bis ich mir das Problem vorgenommen hab, als geplant gewesen war *g*

Mittlerweile klappt das Ganze auch... Gab wohl keinen Error :gruebel:
Hier der Quelltext der funktioniert:

Code:
<?
//...
  $mode['mode'] = 'test'; // evtl. war die Variable nich gesetzt (war eig. ein $_GET
                          // Aber genau weiß ichs nicht... ich glaub, ich hab die Parameter auch gesetzt
//...
?>
//...
<?
  echo $mode['mode']; // das nur zum testen
  // in der folgenden Abfrage hab ich statt "content" auch "id" ausgelesen...
  $query = 'SELECT content,title FROM ' . $table_prefix . 'index WHERE id="'.$mode['mode'].'"';
  $result = mysql_query($query);
  if ($result) echo "true "; else echo "false"; // das nur als Test
  while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
     echo('<div class="headline">' . $row['title'] . "</div>\n");
     echo($row['content']);
    }
  echo mysql_error(); // nur als Test
?>
Jedenfalls ruft der Quelltext das jetzt vernünftig ab...

Nur für diejenigen, die es interessiert :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz