Hallo,
ich muss eine Spalte aus einer mysql-DB abfragen. Connection etc. läuft auch. Allerdings gibt das Echo hinterher 16 mal „Resource id #2“ aus, statt 16 mal „1“.
Dies ist der Code:
<?php $dbVerbindung = mysql_connect("bla bla", "ble ble", "blu blu");
echo mysql\_error();
$dbVerbindung = mysql\_select\_db("bla bla bla", $dbVerbindung);
$sql = 'SELECT mail FROM eigentuemer\_mailadresse';
$result = mysql\_query($sql);
while($array = mysql\_fetch\_assoc($result))
{
echo $result;
}
?\>
Kannst du mir sagen, wie es richtig wäre?
mfg,
David
hi,
ganz kurze Antwort:
Du versucht das Arrayobjekt auszugeben. Du willst jedoch den Wert eines Arrayindexes ausgeben.
Da du wohl auf die Spalte mail zugreifen möchtest versuch mal:
while($array = mysql_fetch_assoc($result))
{
echo $result[„mail“];
}
Viele Grüße
Hallo,
ich muss eine Spalte aus einer mysql-DB abfragen.
Connection
etc. läuft auch. Allerdings gibt das Echo hinterher 16
mal
„Resource id #2“ aus, statt 16 mal „1“.
Dies ist der Code:
<?php :
$dbVerbindung = mysql\_connect("bla bla", "ble ble",
"blu
blu");
echo mysql_error();
$dbVerbindung = mysql_select_db(„bla bla bla“,
$dbVerbindung);
$sql = ‚SELECT mail FROM eigentuemer_mailadresse‘;
$result = mysql_query($sql);
while($array = mysql_fetch_assoc($result))
{
echo $result;
}
?>
Kannst du mir sagen, wie es richtig wäre?
mfg,
David
Ja 
In $result steht bei dir lediglich der „Resource-
Handler“ drin. Das ist quasi ein Zeiger auf die
Rückgabe des SQLs. In der While-Schleife wird dieser
Resource-Handler der Funktion mysql_fetch_assoc()
übergeben, die nun zeilenweise die Daten zurückgibt.
Diese Daten landen in $array.
Um die Daten nun anzuzeigen, musst du auf $array
zugreifen, nicht auf $result. Da $array jedoch, wie der
Name schon sagt, ein Array ist
, machst du anstatt
„echo $result;“ entweder
print_r($array); //gibt immer das gesamte Array aus,
was bei dir aber egal ist, weil du eh nur ein Feld
selektiert hast
oder
echo $array[‚mail‘]; // damit wird jeweils nur die
Spalte ‚mail‘ ausgegeben
Ich denke das wars schon.
Gruß, Tobias
Hallo würde sagen falsche Variable.
In der While-Schleife nimmmt $array das resultat auf
echo $array
bzw echo $array[0] $array[1] …
Hallo würde sagen falsche Variable.
In der While-Schleife nimmmt $array das resultat auf
echo $array
bzw echo $array[0] $array[1] …
Hallo David,
Du lädst jeweils einen Datensatz aus der Ergebnistabelle in die Variable $array, versuchst dann aber erneut $result auszugeben.
while($array = mysql_fetch_assoc($result))
{
echo $result;
}
Richtig wäre, entweder print_r($array) oder echo $array[‚mail‘].
Hoffe geholfen zu haben.
Jens
Hallo David,
dass Du 16x „resource id #2“ zurückbekommst liegt daran, dass $result lediglich ein Resourcepointer ist, der von mysql_query zurückgeliefert wird.
In der Funktion mysql_fetch_assoc wird dann der Pointer übergeben und die „tatsächlichen“ Werte aus der SQL Abfrage geholt.
Allerdings frage ich mich, wieso Du 16x eine 1 erwartest?
Laut SQL Statement fragst Du nach E-Mail-Adressen, sollten dann nicht 16 E-Mail-Adressen erwartet werden?
Richtig wäre es so:
$sql = ‚SELECT mail FROM eigentuemer_mailadresse‘;
$result = mysql_query($sql);
while($array = mysql_fetch_assoc($result))
{
echo $array[‚mail‘];
}
Empfehle Dir hierfür auch die offizielle PHP Doku:
http://de3.php.net/manual/en/function.mysql-query.php
Hoffe das hilft Dir weiter
Gruß
Mathias
Danke Christoph,
funzt mit $array[‚mail‘]…
mfg,
David
Hallo David,
Hallo,
Allerdings frage ich mich, wieso Du 16x eine 1 erwartest?
Laut SQL Statement fragst Du nach E-Mail-Adressen, sollten
dann nicht 16 E-Mail-Adressen erwartet werden?
Sehr gut. Du denkst mit
…
das ganze war erstmal nur ein Test. Aus diesem Grund standen in der untersuchten Spalte nur einsen.
Da ich hinterher noch ein bisschen mit Zahlen gespielt habe, war das erstmal sinnvoller, als irgendwelche Texte in die Tabelle zu schreiben
Richtig wäre es so:
$sql = ‚SELECT mail FROM eigentuemer_mailadresse‘;
$result = mysql_query($sql);
while($array = mysql_fetch_assoc($result))
{
echo $array[‚mail‘];
}
Wunderbar, so klappt es.
Empfehle Dir hierfür auch die offizielle PHP Doku:
http://de3.php.net/manual/en/function.mysql-query.php
Danke, die Doku hab ich mir gestern schon mal ein bisschen angeschaut. Die bringt mich durchaus weiter. SQL scheint sooo kompliziert nicht zu sein…
Hoffe das hilft Dir weiter
Hilft sehr.
Gruß
Mathias
mfg,
David
Super,
danke. mit $array[‚mail‘]gehts.
Habs jetzt nicht mit print_r… ausprobiert.
Dann mal rein aus Interesses. Wenn du Zeit und Lust hast, kannst du mir ja kurz antworeten.
Was macht „echo“ und was macht „print“? Wann benutzt man generell wekchen Befehl?
mfg,
David
Hallo Peter,
so geht es: $array[‚mail‘];
mfg,
David
Hi,
danke für deine ausführliche Antwort.
So geht es natürlich.
mfg,
David
Hallo David,
„echo()“ macht nahezu dasselbe wie „print()“, nämlich einen String ausgeben.
Das angesprochene „print_r“ vermag auch Arrays auszugeben, was bei „echo()“ nur zu der Ausgabe „Array“ führt.
Weitere Hilfe zu dem Thema findest Du bei php.net in der Dokumentation.
bis dann,
Jens
Danke jens,
die php.net Doku konsultiere ich die ganze Zeit schon. Ist aber für einen Anfänger auch relativ unübersichtlich…
Ich versuch mich durch zu beißen.
Wenn du Zeit und Lust hast, könntest du dir dann mal das hier anschauen und sagen, warum es nicht funktioniert?
Das ganze soll bei Klick auf „novo“ den eingegebenen Namen in die meine Tabelle schreiben.
Die If-Bedingung ist da, weil später noch mehr kommt.
Leider wird nur etwas in die Tabelle geschrieben, wenn ich
" if ($do != „novo“) " schreibe.
Meinem Verständnis nach, müsste es aber genau anders herum sein.
Novo cliente: Escreve o nome na tabela energia_teste, numa nova linha na clouna „cliente“
Nome:
<?php // novo cliente
if ($do == "novo")
{
$client = $\_POST['client'];
mysql\_query("INSERT INTO energia\_teste (cliente) VALUES ('$client')");
} else {
echo "nope";
}
// novo cliente fim
$db\_close=mysql\_close($db\_connect);
?\>
mfg,
David
Hallo David,
evtl. ist $do leer, weil „register_globals“ aus ist.
Probier es mal mit $_POST[‚do‘]
bis dann,
Jens
Top!
Danke.
Es geht weiter…