Inhalt eines Tabellenfeldes einer Variablen zuordnene !

blubber

Erfahrenes Mitglied
Hi,

wenn ich mit

$test = mysql_query("SELECT xxxx FROM $test WHERE xxxx= '$xxxx'");

genau ein einziges Feld einer Tabelle selektiere, wie weise ich dann den Inhalt dieses Feldes einer Variablen zu?

also angenommen in dem selektierten feld steht "hallo" drin, dann möchte ich dieses "hallo" meinetwegen einer variablen $variable zuweisen,
so dass bei

echo $variable;

"hallo" erscheint.

bye
 
klar:

$temp_test = mysql_query("SELECT xxxx FROM $test WHERE xxxx= '$xxxx'");
$test = mysql_fetch_array($temp_test );
$variable=$test[xxxx];

;)

Kapiert?

:|
 
hmm..

Hi Held,

hat irgendwie nicht so richtig funktioniert, vielleicht hab ich auch was durcheinander gebracht. zur besseren unterscheidung nochmal mit verschiedenen buchstaben :)

$temp_test = mysql_query("SELECT xxxx FROM $test WHERE yyyy= '$zzzz'");

(damit hab ich ja exakt das feld xxxx selektiert !?)

$test = mysql_fetch_array($temp_test);
$variable=$test[xxxx];

echo $variable;

(also so hab ich das eignetlich gehabt, funktioniert aber nicht)
 
Nee, nee, du musst erst noch den Zwischenschritt über die "Ergebnis-Kennung" machen (die mysql_fetch_array Zeile). Woraus die nu genau besteht würd ich auch gern mal wissen (Wissende gefragt :)), auf jeden Fall kein Klartext.

also ich seh juetzt nur noch xy und z. Ich zeig dir jetzt mal ne funktionierende Abfrage, als Beispiel einer Adressdatenbank:
PHP:
$temp_result = mysql_querry("SELECT Name FROM Adressen WHERE Vorname = '$suche'");
$result =  mysql_fetch_array($temp_result);
$Name = $result[Name];
echo $Name;
Erklärung:
in der ersten Zeile weist du der Variablen $temp_result die Ergebnis-Kennung deiner MySQL-Abfrage zu.

In Zeile 2 wandelst du die Ergebnis-Kennung in ein Array, dessen Elemente nach den MySQL Feldnamen deiner Abfrage benannt wurden. (In diesem Fall hats nur ein Element, nämlich "Name")

Ab jetzt hast du auch echt verwertbaren Text, den du in der dritten Zeile endlich ner Variablen zuweisen kannst.

Is jetzt deutlicher?
:|
 
Zuletzt bearbeitet:
@Der Held: Ich fühl mich in dem Fall mal mit 'Wissender' angesprochen ;)
Du willst wissen, woraus die "Ergebnis-Kennung" besteht? Dann gib sie doch einfach mal über echo aus ;) Soweit ich mich erinnern kann, sollte dann sowas wie "Resource id #x" rauskommen, wobei x den Index des Ergebnisses darstellt. Folgendes hab ich daraus mal geschlossen: Bei einer Abfrage speichert mySQL das Ergebnis in einem internen Cache. Dem aufrufenden Prozess (in dem Fall: der PHP-Interpreter) wird lediglich dessen id übergeben. Und darum muss man diese id dann auch beim Aufruf von z.B. mysql_fetch_array übergeben, damit mySQL weiß, an welcher Stelle im Ergebnis-Cache es zu suchen hat. Das ergibt auch Sinn, denn stell dir mal vor, du machst eine Abfrage, dessen Datenvolumen die Megabyte-Grenze weit überschreitet. mySQL kommt damit locker klar, aber stell dir mal vor, PHP müsste diese Datenmenge in einer Variable speichern... auweia, dann kann´s schon eng werden ;) Außerdem kann´s ja sein, dass man gar nicht alle Daten der Abfrage braucht, und dann wären diese umsonst von mySQL zu PHP transferiert worden. Mit der Methode über die Resource Id und dem Ergebnis-Cache wird i.d.R. nur das übertragen, was man auch wirklich braucht - und nicht mehr. Übrigens, bei Abfragen mit großem Datenvolumen sollte man deshalb den Ergebnis-Cache mit mysql_free_result($result) leeren (wenn man das Ergebnis nicht mehr braucht, versteht sich) und damit mySQL entlasten, bevor es das selber tun muss ;)
 
hmmm

also irgendwie peil ich das net. Die Erklärung von dir, Held, hab ich schon kapiert, und ich hab das auch so gemacht.
also ich hab in meiner datenbank eine tabelle die heisst ca_login

so, und diese tabelle hat 3 spalten, nämlich ID, loguser und logpass

in ID steht der wert 1 drin.
in loguser steht "hans" drin.
in logpass steht "wurst" drin.

ich möchte nun, die dritte spalte, also logpass selektieren und ausgeben, das hab ich mit dieser datei gemacht:

<?php

include("connect.php"); //connection zu meiner datenbank, funktioniert 100 pro

$temp_result = mysql_query("SELECT logpass FROM $ca_login WHERE loguser = 'hans'");
$result = mysql_fetch_array($temp_result);

$logpass = $result[logpass];
echo $logpass;
?>

So funktioniert das aber net.
Ich bekomm als fehlermeldung:

Warning: Supplied argument is not a valid MySQL result resource in ............\abfrage.php on line 6

abfrage.php heisst meine "testdatei".

bye
 
@blubber:

enthält $ca_login auch einen String der den Namen der Tabelle enthält?
Du sagst du möchtest die Tabelle ca_login abfragen, dann musst du also das $ weglassen:

$temp_result = mysql_query("SELECT logpass FROM ca_login WHERE loguser = 'hans'");

@reima:
Hmm, das mit dem Cache klingt logisch. Kennst du ne Source wo man mal was über die MySQL und PHP internas erfahren kan? Würd mich brennend interessieren wie sowas überhaupt aufgebaut ist, bzw. wies *wirklich* funktioniert.

Greetz:|
 
Zurück