MySQL Array

Also ich habe mich heute schwer in MySQL eingearbeitet und auch schon einige Erfolge verbucht :ps:
Allerdings schaffe ich es zum ver**** nicht eine Tabelle so ausgeben zu lassen wie ich das möchte :susp:

Also nehmen wir mal an in der Tabelle sind die Spalten „Name“ und „Alter“ gegeben. Eingetragen sind „Name1“, „Age1“ und „Name2“, „Age2“ und „Name3“, „Age3“.

Ausgegeben werden soll es so:

$ausgabe = array( "Name1" => "Age1", "Name2" => "Age2", "Name3" => "Age3");
Und zwar das auch egal wie viele Reihen / Einträge in der Tabelle sind.

Ich hab es versucht mit :

mysql_ fetch_ array

mysql_ fetch_ assoc

mysql_ fetch_ row

Aber alles was ich erreicht habe, ist dass ein eintrag ausgegeben wurde (siehe $row = mysql_fetch_row($result); echo $row[0]; echo $row[1];) Oder dass gar nix passiert ist. :astonished:

Na fein, das schaffst du bestimmt auch noch ein zweites Mal.

Oder eine unbestimmte Anzahl mal, je nachdem wie viele Datensätze es gibt - dazu bietet sich eine Schleife an.
Dazu hat sogar das Manual zu mysql_fetch_array ein Beispiel, und auch in jedem Anfänger-Tutorial dürfte das beschrieben sein.

Also ich möchte betonen ich habs schwer versucht :wink:

Aber 1. Ja ich bin das Manual am Lesen.
2. Ich habe es versucht mit

Aber net gefunzt, nur das erste Mal.

Und mit mysql_fetch_array müsste dass dan so aussehen oder wie:

mysql_connect("localhost", "mysql_user", "mysql_password");

mysql_select_db("mydb");

$result = mysql_query("SELECT name, age FROM mytable");

$row = mysql_fetch_array($result, MYSQL_ASSOC);

Und das müsste dann ja auch mit
SELECT * FROM mytable
gehen, oder?

Das ist absolut keine brauchbare Problembeschreibung.

:ps: sehs ja ein :ps:

Also räusper hust HUST

Wenn ich folgendes eingebe:

[code]$row = mysql_fetch_row($result);
echo $row[0];
echo $row[1];

$row2 = mysql_fetch_row($result);
echo $row2[0];
echo $row2[1];[/code]
Kommt das gleiche bei raus, als wie wo wenn ich folgendes eingebe:

$row = mysql_fetch_row($result); echo $row[0]; echo $row[1];

Will sich nennen, es wird nur der erste Eintrag / die erste Reihe der Tabelle „ge’echo’ed“.

Dann stell das error_reporting auf E_ALL, und schau welche Fehlermeldungen du bekommst.

Hmm hab mich schon gewundert, bei MySQL kommen kaum Fehlermeldungen, da kann ich net viel verbessern…
Aber funzt net, es wird immernoch unverändert die erste Reihe ausgegeben.

Mal mein gesamter Code:

[code]<?php
error_reporting(E_ALL);
ini_set(‚error_reporting‘, E_ALL);
$link = mysql_connect(„localhost“, „habich“, „schongeändert“);
mysql_select_db(„daswaren“, $link);
$test = "SELECT * FROM allesplatzhalter;)";
$result = mysql_query($test);
$row = mysql_fetch_row($result);
echo $row[0];
echo $row[1];

$row2 = mysql_fetch_row($result);
echo $row2[0];
echo $row2[1];
?>[/code]
Ich hab mal beide Varianten gesetzt (error), aber es funzt gar keine, als Quelltext wird nur folgendes ausgegeben:

Name1Age1

Nun bin ich mit meinem Latein am Ende o.0 Aber iwas muss ich ja richtig gemacht haben, schließlich wird das eine ja ausgegeben.

Empfehlung:

$link = mysql_connect("localhost", "111", "111");
mysql_select_db("111", $link);

deine Zugangsdaten zur Datenbank würd ich dir empfehlen aus deinem Post rauszunehmen

Was heisst „da kommen kaum Fehlermeldungen”?
Du kümmerst dich in deinem Script überhaupt nicht darum, ob ein Fehler bei der Abfrage auftrat!

Das kann nicht sein, dass dabei keine Fehlermeldung kommt.
(Bitte prüfe, ob display_errors auf on steht.)

Normalerweise meckert PHP doch bei jedem vergessenen Strichpunkt, aber bei den MySQL functionen kommt nix automatisch.

Wenn ich ini_set(‘display_errors’, 1); mache kommt auch nix. Und bei display_errors(1); kommt error, dass die function net stimmt :smiley:

Natürlich nicht.
Wieso sollte PHP einen Fehler melden, wenn aus Sicht von PHP alles reibungslos verlaufen ist?
PHP hat deine Abfrage ordnungsgemäß an die Datenbank übergeben, und diese darauf geantwortet. Aus Sicht von PHP also alles paletti.

Deshalb musst du die Datenbank explizit nach Fehlermeldungen fragen, wenn du wissen willst, ob es ihrerseits welche gab.

Hast du mal ein Online-Beispiel?

Meine URL wird dir net viel nutzen, da kommt ja nur die ausgabe :wink:

Und den Code hab ich ja eben gepostet, aber nochmal:

[code]<?php
ini_set(‘display_errpors’, 1);
error_reporting(E_ALL);
ini_set(‘error_reporting’, E_ALL);
$link = mysql_connect(“localhost”, “djholge_meineusername”, “12345”);
mysql_select_db(“djholge_meineusername”, $link);
$test = "SELECT * FROM TestAnmeldung";
$result = mysql_query($test);
$row = mysql_fetch_row($result);
echo $row[0];
echo $row[1];

$row2 = mysql_fetch_row($result);
echo $row2[0];
echo $row2[1];
?>[/code]
Ja das ist alles, meineswissens müssen keine Html-Tags enthalten sein, damit es funzt oder.

Bitte trotzdem eine Adresse angeben, unter der man sich das anschauen kann.

[quote]Und den Code hab ich ja eben gepostet, aber nochmal:

[code]<?php
ini_set(‘display_errpors’, 1);[/quote]
Hast du den Namen dieser Option im realen Script richtig geschrieben?

Ouuupsss, nein hatte ich net, aber hab ich jetzt aber es funzt immer noch net.
Dann Hier

Und was bekommst du für ein Ergebnis, wenn du die identische SQL-Abfrage direkt über phpMyAdmin testest?

Wenn es keinen zweiten Datensatz gibt, dann muss dein Script in der geposteten Form einen Fehler liefern.
Wenn es das nicht tut, kann das eigentlich nur noch bedeuten, dass es zwar einen zweiten Datensatz gibt, dieser aber nur leere Felder enthält. In Fall existiert dann zwar kein Fehler, aber „Nichts” siehst du halt auch in der Ausgabe nicht.

Um sowas zu prüfen, eigenet sich auch var_dump ganz gut. Damit mal $row2 zur Kontrolle ausgeben lassen.

Also mit phpMyAdmin steh ich auf dem Kriegsfuß :wink: Ich habe bis jetzt noch keinen Befehl ausführen können, da kommt immer No Database Selected, das müsste doch mit einloggen automatisch gehen und ich hab auch nix gefunden, dass es klappt -_-

Mit var_dump kommt

array(2) { [0]=> string(0) "" [1]=> string(0) "" } Also wirklich leeres Feld o leck… Nur ich weis net wie sich das da reingeschlichen hat, ich hab ganz normal die INSERT INTO gemacht…
Aber ich hab mich hier echt sau dumm angestellt hätte auch mal auf die Idee kommen können, die weiteren Reihen auszugeben -.- :ps: :ps: :red: