PHP + MySQL + Anfänger

Hallo,
ich möchte eine MySQL-Datenbank nutzen. Die Datenbank möchte ich über eine PHP-Seite steuern. Hintergrund: ein Gästebuch.
Ich habe mit phpMyAdmin eine Datenbank erstellt.
So versuche ich zu connecten:

mysql_connect(„localhost“, „root“,"");
mysql_select_db(„christian“);?>

Die Datenbank liegt an einem anderen Ort, aber wenn ich was anderes als „localhost“ eintrage gibts eine Warnung. Ich denke das der Pfad irgendwie von Xampp zur DB gelegt wird.
So dann versuche ich etwas einzutragen mit:

<?php $name = $_POST["name"];
$nachname = $\_POST["nachname"]; echo $name." "; echo $nachname; $eintragen = mysql\_query("INSERT INTO neuetabelle (name, nachname) VALUES ('$name', '$nachname')"); ?\> ------------------------------------------------------ Die Variablen sind nicht leer. So und dann versuche ich sie wieder auszugeben. ------------------------------------------------------ <?php $ausgabe = "SELECT name FROM neuetabelle";
$ergebnis = mysql\_query($ausgabe); echo $ergebnis; ?\> ------------------------------------------------------ Aber ergebnis scheint leer zu sein bzw es kommt als ausgabe: Resource id #3 Ich weiss nicht wie ich prüfen kann ob es eingetragen wurde, ob ich verbunden bin. Kein Ahnung. ICh bin für jeden Tipp dankbar. mfg Christian

Hallo !

So versuche ich zu connecten:

mysql_connect(„localhost“, „root“,"");
mysql_select_db(„christian“);?>

Die Datenbank liegt an einem anderen Ort, aber wenn ich was
anderes als „localhost“ eintrage gibts eine Warnung. Ich denke
das der Pfad irgendwie von Xampp zur DB gelegt wird.

Ist schon ok so (na gut, du solltest aus Sicherhheitsgründen dringend ein Passwort für „root“ setzen, aber gehen sollte es), wenn die DB auf dem selben Rechner liegt. Du sprichst ja mit dem mySQL Server, und greifst nicht direkt auf die Dateien zu.
Wo die Dateien liegen, ist in der Konfiguration des mySQL-Servers hinterlegt, dieser führt die Abfragen aus und verwaltet die Daten.

So dann versuche ich etwas einzutragen mit:

<?php : $name = $_POST["name"];
$nachname = $\_POST["nachname"]; echo $name." "; echo $nachname; $eintragen = mysql\_query("INSERT INTO neuetabelle (name, nachname) VALUES ('$name', '$nachname')"); ?\> ------------------------------------------------------

Wenn keine Warnung kam, ist alles Ok. $eintragen sollte irgendwas ungleich null sein.
Ggfs. kannst du mit mysql_affected_rows herausfinden, wieviele Datensätze betroffen waren.

Mit

$eintragen = mysql_query(„INSERT INTO neuetabelle (name,
nachname) VALUES (’$name’, ‚$nachname‘)“) or die(mysql_error());

sieht man evtl. Fehlermeldungen sofort…

So und dann versuche ich sie wieder auszugeben.

<?php : $ausgabe = „SELECT name FROM neuetabelle“;
$ergebnis = mysql_query($ausgabe);
echo $ergebnis;
?>

Aber ergebnis scheint leer zu sein bzw es kommt als ausgabe:
Resource id #3

Naja, ist doch in Ordnung. mysql_query gibt dir einen Zeiger auf das Ergebnis, was du jetzt Zeilenweise auslesen kannst:

while($data = mysql\_fetch\_assoc($ergebnis)) {
 echo "Name:".$data["name"]."
";
}

Ich weiss nicht wie ich prüfen kann ob es eingetragen wurde,

XAMPP enthält soweit ich weiss phpMyAdmin, um die Datenbanken bequem zu verwalten.

ob ich verbunden bin. Kein Ahnung.

Dann sollte beim mysql_connect 0 als Rückgabewert kommen kommen…
if (!mysql_connect(…)) {
echo „Keine Verbindung“;
}

Alexander

Hey :wink:
danke Alexander!
Ich werde deine Vorschläge mal ausprobieren.

mfg
Christian

hallo,
ich bins wieder.
Was bedeutet dieser Ausdruck?

mysql_fetch_assoc

Ich hab ihn in meiner Hilfe nicht gefunden.

mfg
christian

Das Helpfile von php.net sagt folgendes:
Auszug unten.
ich verwende aber eigentlich immer mysql_fetch_array.
ein Beispiel von mir, wie eine Datenbankabfrage aussehen müsste.

$qs = „SELECT * FROM tabelle WHERE id“;
}

im detail erklärt rufst Du alle Daten aus der tabelle „tabelle“ ab, die eine id unter 100 haben. Die Ausgabe wird dabei sortiert nach dem Inhalt der Spalte „time“ und das Limit gibt an, dass 20 Datensätze beginnend ab dem 10. gefundenem Datensatz angezeigt werden sollen.
das andere ist denk ich klar - Fehlermeldung, wenn das query nicht klappt und unten dann die Ausgabe der inhalte der Spalte „inhalt“ mit einem voneinander getrennt…
noch Fragen?

mysql_fetch_assoc
mysql_fetch_assoc – Liefert einen Datensatz als assoziatives Array
Beschreibung
array mysql_fetch_assoc ( resource Ergebnis)

Liefert ein assoziatives Array, das den geholten entprechenden Datensatz enthält. Sind keine weiteren Datensätze vorhanden gibt diese Funktion FALSE zurück.

mysql_fetch_assoc() entspricht in der Funktionsweise exakt dem Aufruf von mysql_fetch_array() mit Angabe von MYSQL_ASSOC als optionalen zweiten Parameter. Diese Funktion liefert Ihnen nur ein assoziatives Array. Das war das ursprüngliche Verhalten von mysql_fetch_array(). Falls Sie sowohl numerische, als auch assoziative Indizes benötigen, verwenden Sie mysql_fetch_array().

Falls zwei oder mehrere Felder des Ergebnisses den gleichen Feldnamen haben, dann wird nur der Wert des letzten Felds im Array unter diesem Feldnamen abgelegt. Um auch auf die anderen, gleichnamigen, Felder zugreifen zu können, müssen Sie entweder numerische Indizes und damit mysql_fetch_row() benutzen, oder Aliase für Ihre Felder anlegen. Zur Verwendung von Aliasen schauen Sie sich das Beispiel unter der Beschreibung von mysql_fetch_array() an.

Zu betonen ist, dass der Gebrauch von mysql_fetch_assoc() nicht signifikant langsamer ist als mysql_fetch_row(), obwohl die Funktion einen sichtlichen Mehrwert bietet.

Beispiel 1. mysql_fetch_assoc() Beispiel

<?php mysql_connect("localhost", "mysql_user", "mysql_password");
mysql\_select\_db("mydb"); $query = "select \* from table"; $result = mysql\_query($query); while ($row = mysql\_fetch\_assoc($result)) { echo $row["user\_id"]; echo $row["fullname"]; } mysql\_free\_result($result); ?\> Für weitere Details, siehe auch mysql\_fetch\_row(), mysql\_fetch\_array() und mysql\_query().

aha
danke

mfg
christian

Hi !

ich verwende aber eigentlich immer mysql_fetch_array.

Naja, in Schleifen ist das ggfs. lästig, weil der pro Spalte ohne weitere Parameter immer 2 Ergebnisse (einmal mit dem Spaltennamen, einmal mit der Nummer als Schlüssel) liefert.
Und mysql_fetch_assoc ist halt kürzer als mysql_fetch_array($bla, MYSQL_ASSOC);. Reine (Schreib-)Faulheit :wink:

Alexander