Daten werden nicht gespeichert, "leere Tabelle"
Josef
- php
0 Rouven0 Josef
0 Vinzenz Mai0 Josef
hallo,
ich habe folgendes problem:
ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.
Der code hierzu sieht wie folgt aus:
<?PHP
$name = $_POST["name"];
$nachname = $_POST["nachname"];
$eintrag = "INSERT INTO adressen (name,nachname) VALUES
('$name','$nachname')";
$eintragen = mysql_query($eintrag);
mysql_close();
include 'db_ausgabe.php' //daten wieder ausgeben
?>
Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(
was mach' ich falsch?
für eine antwort freue ich mich sehr,
liebe grüsse,
josef
Hi,
$eintrag = "INSERT INTO adressen (name,nachname) VALUES
('$name','$nachname')";
lass dir das hier bitte mal ausgeben.
$eintragen = mysql_query($eintrag);
Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error
MfG
Rouven
Hallo Rouven
$eintrag = "INSERT INTO adressen (name,nachname) VALUES
('$name','$nachname')";
lass dir das hier bitte mal ausgeben.
ok print_r($eintrag) liefert:
INSERT INTO adressen (firma,name) VALUES ('','')
hierstimmt etwas nicht!!! statt ('$name','$nachname') wird ('','')
in die variable übergeben??? :-/
$eintragen = mysql_query($eintrag);
Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error
ja habe ich gemacht! mysql_error liefert keine fehler
bin immernoch ratlos
Hallo Josef,
lass dir das hier bitte mal ausgeben.
ok print_r($eintrag) liefert:
INSERT INTO adressen (firma,name) VALUES ('','')
hierstimmt etwas nicht!!! statt ('$name','$nachname') wird ('','')
in die variable übergeben??? :-/
Wie ich bereits erwähnte:
Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.
$eintragen = mysql_query($eintrag);
Es ist immer eine gute Idee hier auf eventuelle Fehler abzuprüfen, siehe z.B. mysql_error
ja habe ich gemacht! mysql_error liefert keine fehler
Nun ja, das SQL-Statement ist syntaktisch korrekt und wird von MySQL daher anstandslos ausgeführt. Du musst dafür sorgen, dass Dein SQL-Statement so aussieht, wie es Deiner Ansicht nach aussehen sollte.
bin immernoch ratlos
Lass Dir doch den Inhalt von $_POST anzeigen, vielleicht auch noch den von $_GET. Vielleicht lauten die Schlüssel anders, vielleicht suchst Du Deine Daten im falschen Array. Das können wir - wiederum mangels Code - nicht wissen. Dazu müssten wir den (HTML-)Code der Formularseite kennen, von der aus dieses Skript hier aufgerufen wird.
Freundliche Grüße
Vinzenz
Hallo Josef,
ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.
in eine MySQL-Datenbank, wie es aussieht. Es ist bei MySQL-Fragen meist eine gute Idee, die genaue Version anzugeben, da der Funktionsumfang zwischen den Versionen enorm differiert.
Der code hierzu sieht wie folgt aus:
<?PHP
$name = $_POST["name"];
$nachname = $_POST["nachname"];
Warum? Warum diese Zuweisung. Sie ist überflüssig. Weg damit.
$eintrag = "INSERT INTO adressen (name,nachname) VALUES
('$name','$nachname')";
Oh je. Du verläßt Dich auf die unseligen Magic Quotes von PHP. Verwende lieber mysql_real_escape_string. Lies Dir die gesamte Handbuchseite durch, orientiere Dich an Beispiel 3.
$eintragen = mysql_query($eintrag);
Was machst Du im Fehlerfall? Ich vermisse Deine Fehlerbehandlung.
mysql_close();
include 'db_ausgabe.php' //daten wieder ausgeben
Bitte, was steht in db_ausgabe.php? Meine Glaskugel will nicht so recht.
Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(
Lass Dir doch die Abfrage anzeigen, bevor Du sie an MySQL weitergibst, echo dürfte Dir nicht unbekannt sein. Es wäre nett, wenn Du uns dann diese Abfrage im Klartext angeben würdest, denn mit PHP-Code kann in einem solchen Fall weder MySQL noch ein potentieller Helfer etwas anfangen. In vielen Fällen sieht das generierte SQL-Statement anders aus als man es erwartet.
Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
ich habe ein php script geschrieben, das name und nachname eines kunden in die sql datenbank speichern soll.
in eine MySQL-Datenbank, wie es aussieht. Es ist bei MySQL-Fragen meist eine gute Idee, die genaue Version anzugeben, da der Funktionsumfang zwischen den Versionen enorm differiert.
die Mysql version ist 5.0.21
Der code hierzu sieht wie folgt aus:
<?PHP
$name = $_POST["name"];
$nachname = $_POST["nachname"];Warum? Warum diese Zuweisung. Sie ist überflüssig. Weg damit.
$eintrag = "INSERT INTO adressen (name,nachname) VALUES
('$name','$nachname')";Oh je. Du verläßt Dich auf die unseligen Magic Quotes von PHP. Verwende lieber mysql_real_escape_string. Lies Dir die gesamte Handbuchseite durch, orientiere Dich an Beispiel 3.
ok danke für den Tipp! werde ich gleich tun$eintragen = mysql_query($eintrag);
Was machst Du im Fehlerfall? Ich vermisse Deine Fehlerbehandlung.
mysql_error !?mysql_close();
include 'db_ausgabe.php' //daten wieder ausgebenBitte, was steht in db_ausgabe.php? Meine Glaskugel will nicht so recht.
dort steht:
<?//Verbindung zur SQL Datenbank herstellen
//include 'db_connect.php';
include 'db_connect.php';
//SQL Befehl in eine Variable $anfrage speichern
$anfrage = "SELECT * FROM adressen";
//Dann wird der SQL Befehl ausgeführt, indem mysql_query aufgerufen wird
$ergebnis = mysql_query($anfrage);
echo "Name <br>";
while ($row = mysql_fetch_object($ergebnis))
{
echo $row->firma.' ';
echo $row->name.' ';
echo $row->nachname.'<br>';
}
?>
Bei der Ausgabe dieser Daten werden jedoch kurioserweise leere Felder
ausgegeben?? wenn ich die Datenbank, in der die eingegebenen Daten gespeichert werden, mit myphpadmin öffne, sehe ich, dass neue Datensätze angelegt worden sind, diese sind aber leer..bin ratlos :-(Lass Dir doch die Abfrage anzeigen, bevor Du sie an MySQL weitergibst, echo dürfte Dir nicht unbekannt sein. Es wäre nett, wenn Du uns dann diese Abfrage im Klartext angeben würdest, denn mit PHP-Code kann in einem solchen Fall weder MySQL noch ein potentieller Helfer etwas anfangen. In vielen Fällen sieht das generierte SQL-Statement anders aus als man es erwartet.
Eine weitere gute Idee wäre möglicherweise, sich mit var_dump oder print_r einen Überblick zu verschaffen, was in den Superglobalen Arrays drinsteht. Zum besseren Lesen ist es praktisch, die Ausgabe innerhalb eines <pre>-Elementes vorzunehmen.
Freundliche Grüße
Vinzenz
Vielen Dank
und schöne grüsse zurück
josef