PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie rufe ich mit PHP ein Feld aus einer Datenbank auf?


Slaughter
12.10.2003, 18:40:39
So nun erkenn ich meinen Fehler, den ich seit Anfang an hatte.
Er ist:
Ich kann keinen richtigen Befehl zum Aufrufen eines Feldes in einer Datenbank!

Nun frage ich euch, wie ist so ein richtiger Befehl aufgebaut.
Ich mach es folgender Maßen:

...
$sql= "SELECT
Feld
FROM
Tabelle";

$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result) OR die(mysql_error());

echo ""Feld = ".$row['Feld'].""";


Doch kriege ich bei dieser Variante immer nichts raus. (Sprich steht bei mir dann "Feld = ")
Was habe ich falsch gemacht, oder ist es alleine von den Befehlen falsch?

diver-network
12.10.2003, 18:52:58
Hi,

den Befehl mysql_fetch_assoc() kenne ich leider nicht. Ich würde Dir eher mysql_fetch_array() empfehlen.

Schau hierzu doch einfach mal in SelfPHP nach, dort stehen einige Befehle, um Daten aus einer Datenbank in php- Variablen zu bekommen.

URL: http://www.selfphp.info/funktionsreferenz/mysql_funktionen/index.php

Gruß,

Andy

Slaughter
12.10.2003, 19:16:37
mysql_fetch_array ist so fast das gleiche, wie mysql_fetch_assoc.
Siehe Hierzzu
Original von SelfPHP

Mit mysql_fetch_array() kann man sich anhand einer Ergebnis-Kennung
(Ergebnis-Kennung) Datensätze in einem assoziativen Array übergeben lassen.
Dabei werden die Feldnamen innerhalb der Tabelle als Schlüssel des Arrays
genutzt. Im Erfolgsfall liefert diese Funktion den aktuellen Datensatz, sonst wird
false zurückgegeben.
Der zweite Parameter (Ergebnistyp) ist optional. Sie können in diesem Parameter
folgende Konstanten übergeben:
MYSQL_ASSOC: Funktionsergebnis ist ein assioziatives Array.
MYSQL_NUM: Funktionsergebnis ist ein numerisch indiziertes Array.
MYSQL_BOTH: Funktionsergebnis ist ein Array, das die Elemente des
Ergebnisdatensatzes sowohl assoziativ als auch numerisch indiziert enthält. Dies
ist der Default-Wert.


Wenn ich array benutze, kommt das selbe raus :(

diver-network
13.10.2003, 09:01:40
Hi Slaughter,

danke für die Aufklärung bzgl. mysql_fetch_assoc(), schon wieder was gelernt.

Für Dein Problem würde ich Dir, wenn mysql_fetch_array() nicht funktioniert, noch mysql_fetch_row() empfehlen. Allerdings mußt Du da die Werte halt in einer Schleife zuerst in einzelne Variablen (bzw. ein Array) "reinpacken", außer Du gibst alles gleich direkt aus, kannst aber später nicht mehr mit dem Ergebnis arbeiten. Bei dem Array kann es sein, daß Du da vorher noch eine Variable definieren mußt, die dann in der Schleife als Array Index hochgezählt wird. Das hab ich im Moment nicht getestet.

HTH, falls nicht weiß ich auch nicht, wo das Problem liegen könnte. Außer, und das hoffe ich nicht, Du hast vergessen, die Anbindung an die DB zu machen (mysql_connect() und mysql_select_db() ) ;-)

Andy

Ben20
13.10.2003, 10:09:56
Blöde Frage, aber heißt das Feld wirklich "Feld"? Der Array bezeiht sich nämlich auf den Feldnamen wie er in der DB steht!

Slaughter
13.10.2003, 13:46:10
Original geschrieben von Ben20
Blöde Frage, aber heißt das Feld wirklich "Feld"? Der Array bezeiht sich nämlich auf den Feldnamen wie er in der DB steht!

Wie meinst du das? Ich habe es nur so so genannt. Wirklich heißt das Feld Datum und ich habe, überall wo jetzt Feld steht, Datum genannt.

Ben20
13.10.2003, 15:54:27
Na dann ist ja alles OK! Neben den ganzen Funktionen gibts noch mysql_result($queryhandle, $zeilenr, $feldnr); um Werte aus der DB zu lesen!

schlodd
14.10.2003, 09:12:41
die Funktion mysql_result ist aber langsamer und sollte nur in Ausnahmefällen angewandt werden (laut Jörg Krause, Auth. von Grundlagen und Profiwissen PHP4, Hanserverlag)

Ben20
14.10.2003, 09:31:24
Es stimmt, das mysql_result() langsamer ist als mysql_fetch_row() - allerdings macht sich das in der Praxis kaum bemerkbar! (Extrembeispiele wie 60 - 70 SQL Abfragen (da ist mit Sicherheit dann ein Denkfehler drin) natürlich ausgenommen)

diver-network
15.10.2003, 13:58:28
Hi Slaughter,

Dein Problem wird vermutlich die unterschiedliche Schreibweise (Groß-/Kleinschreibung) des Feldnamens sein.
Diese muß in der Tabelle und bei mysql_fetch_array() gleich sein.

Vergleiche hierzu auch den Thread "Problem mit mysql_fetch_array bzw. fetch_row" beim Experten Forum.

Der Tip kam übrigends von chris17, ihm gebühren die Blumen ;-)

HTH,

Andy

Slaughter
21.10.2003, 12:48:14
Original geschrieben von diver-network
Hi Slaughter,

Dein Problem wird vermutlich die unterschiedliche Schreibweise (Groß-/Kleinschreibung) des Feldnamens sein.
Diese muß in der Tabelle und bei mysql_fetch_array() gleich sein.

Vergleiche hierzu auch den Thread "Problem mit mysql_fetch_array bzw. fetch_row" beim Experten Forum.

Der Tip kam übrigends von chris17, ihm gebühren die Blumen ;-)

HTH,

Andy

welches Thema meinst du?
Und die Feldnamen habe ich natürlich beide gleich geschrieben...

$sql = "SELECT
Stand
FROM
Counter";

$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_row($result);

echo "Sie sind der ".$row['Stand'].". Besucher";

diver-network
21.10.2003, 13:02:13
Hi Slaughter,

schau mal hier -> http://www.selfphp.info/forum/showthread.php?threadid=5796 .

Das hättest Du aber auch selber über die Suchfunktion des Forums finden können (z.B. suchen nach Beiträgen von Chris17) ;-)

Mit der Schreibweise der Feldnamen ist gemeint, daß sowohl in der Feldname in der DB als auch der Name, den Du im mysql_fetch_row() statement verwendest gleich geschrieben sein muß.

Gruß,

Andy, der ansonsten auch nicht mehr weiter helfen kann

chris17
21.10.2003, 13:27:28
Hallo,

im php-Skript müssen die Namen genauso geschrieben werden, wie Du sie im phpMyAdmin angelegt hast... -> "Stand" u. "Counter"

Mit mysql_fetch_array oder mysql_fetch_assoc, dann kannst Du den Wert mit dem Namen ansprechen:

$sql = "SELECT
Stand
FROM
Counter";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_array($result);
echo "Sie sind der ".$row['Stand'].". Besucher";

...mit mysql_fetch_row, hier muss der Index angesprochen werden:

$sql = "SELECT
Stand
FROM
Counter";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_row($result);
echo "Sie sind der ".$row[0].". Besucher";

...oder mit mysql_result:

$sql = "SELECT
Stand
FROM
Counter";
$result = mysql_query($sql) OR die(mysql_error());
$stand = mysql_result($result, 0, "Stand");
echo "Sie sind der ".$stand.". Besucher";
Alles davon ausgehend, dass es in der Tabelle "Counter" einen Datensatz gibt, bzw. der Wert "Stand" im ersten Datensatz steht.

Gruss

Christian

Slaughter
21.10.2003, 20:55:12
Er zeigt jetzt an "Sie sind der . Besucher".
Naja, um missverständnisse auszuschließen, meine Tabelle Counter sieht so aus

http://www.master-net.de/snap.jpg