andyah
Goto Top

MySQL - Tabelle speichert keine Daten

Hi NG,

ich kann bei einer MySQL-Tabelle keine Datensätze hinzufügen, obwohl ein Primärschlüssel und ein Timestamp-Feld definiert sind. Das Primärschlüssel-Feld ist auf AutoIncrement gestellt.

Woran liegt das und wie kann ich den Fehler beheben.

Gruß
Andy

Content-Key: 203482

Url: https://administrator.de/contentid/203482

Printed on: April 18, 2024 at 18:04 o'clock

Member: catachan
catachan Mar 18, 2013 at 08:42:21 (UTC)
Goto Top
Hi

wie sieht die Fehlermeldung aus ? Hat das Userkonto auch INSERT Berechtigung ?

LG
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 at 08:42:43 (UTC)
Goto Top
Hallo,

Woran liegt das und wie kann ich den Fehler beheben.
Das könnten wir dir eventuell sagen, wenn du uns den Fehler auch mitteilst. Gibt es irgendwelche Fehlermeldungen, wenn ja, welche!?

Gruß
@d4shoerncheN
Member: AndyAh
AndyAh Mar 18, 2013 at 08:48:12 (UTC)
Goto Top
Hi,

der User ist root. Eine Fehlermeldung gibt es nicht.

Gruß
Andy
Member: catachan
catachan Mar 18, 2013 at 08:49:53 (UTC)
Goto Top
Hi

Eine Fehlermeldung gibt es nicht.

Dubios ! Wie greifst du auf die Datenbank zu ? PHP ?

LG
Member: AndyAh
AndyAh Mar 18, 2013 at 08:51:39 (UTC)
Goto Top
Hi,

über PHP und ODBC.

Gruß
Andy
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 at 08:52:26 (UTC)
Goto Top
Hallo,

liest er denn die bestehenden Datensätze oder funktioniert auch dies nicht?

Gruß
@d4shoerncheN
Member: catachan
catachan Mar 18, 2013 at 08:53:20 (UTC)
Goto Top
Hi

Poste mal bitte den Code ! Bitte die CodeTags nicht vergessen.
ODBC oder die internen PHP-Mysql Funktionen wie mysql_connect() ?

LG
Member: AndyAh
AndyAh Mar 18, 2013 at 08:59:23 (UTC)
Goto Top
Hi,

in dieser Tabelle gibt es noch keine Datensätze.

Gruß
Andy
Member: AndyAh
AndyAh Mar 18, 2013 updated at 14:46:25 (UTC)
Goto Top
Hi,

hier der Code:
<?php
$anrede = $_POST["anrede"];  
$vorname = $_POST["vorname"];  
$nachname = $_POST["nachname"];  
$strasse = $_POST["strasse"];  
$ort = $_POST["ort"];  
$plz = $_POST["plz"];  

$email = $_POST["email"];  
$kommentar = $_POST["kommentar"];  

$daten = "adressen";  
$db = mysql_connect ("localhost", "root", "");  
$select_db = mysql_select_db($daten); 



$sql_befehl = "INSERT INTO mitgieder(                
                    Anrede,
					Vorname,
					Nachname,
					strasse,
					plz,
					ort,
					EMail,
					Kommentar)
					
					values(
					
					'$anrede',  
					'$vorname',  
					'$nachname',  
					'$strasse',  
					'$plz',  
					'$ort',  
					'$email',  
					'$kommentar')";  
					
$result = mysql_query($sql_befehl);

if ($result)
{
   echo "gespeichert";  
}
else
{
   echo "nicht gespeichert";  
}

mysql_close($db);


			
?>
Ferner habe ich im Code das Problem, dass das Feld ORT, obwohl es im Formular existiert und auch richtig geschrieben ist, nicht ausgelesen wird.

Gruß
Andy
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 updated at 09:05:45 (UTC)
Goto Top
Hallo Andy,

bitte setz deinen Code zwischen folgende Befehle
< code>
DEIN CODE
< /code>

Leerzeichen nach den < bitte noch entfernen.

Gruß
@d4shoerncheN
Member: catachan
catachan Mar 18, 2013 at 09:05:25 (UTC)
Goto Top
Hi

bitte in Code Tags packen.
Heißt deine Tabelle wirklich mitgieder ?

Außerdem würde ich zum Aufbauen der Verbindung folgenden Code verwenden:

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');  
if (!$link) {
    die('Verbindung schlug fehl: ' . mysql_error());  
}
echo 'Erfolgreich verbunden';  
mysql_close($link);
?>

Ich glaube bei dir hackts schon beim Aufbau der Verbindung

LG
Member: AndyAh
AndyAh Mar 18, 2013 updated at 09:16:57 (UTC)
Goto Top
Hi,

mit dem 'die' scheint es nicht zu funktionieren. Ich bekomme die Fehlermeldung:

Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\PHP\datenbank.php on line 57

Gruß
Andy
Member: catachan
catachan Mar 18, 2013 at 09:22:19 (UTC)
Goto Top
Hi

wie sieht denn deine Zeile 57 aus ? Soll ich raten ?
Wahrscheinlich hast du ?> oder einen ; zu viel.

LG
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 at 09:25:10 (UTC)
Goto Top
Zitat von @catachan:
Hi

wie sieht denn deine Zeile 57 aus ? Soll ich raten ?
Wahrscheinlich hast du ?> oder einen ; zu viel.

LG
Hallo catachan,

soll ich dir meine Glaskugel leihen?

Gruß
@d4shoerncheN
Member: AndyAh
AndyAh Mar 18, 2013 at 09:27:47 (UTC)
Goto Top
Hi,

ja, es heißt ?>. Ein ; ist nicht zuviel.

Gruß
Andy
Member: catachan
catachan Mar 18, 2013 at 09:29:01 (UTC)
Goto Top
Hi

das ?> gehört ganz am Schluss. Beschäftige dich bitte mal mit den PHP Grundlagen

LG
Member: AndyAh
AndyAh Mar 18, 2013 updated at 09:31:01 (UTC)
Goto Top
Hi,

genau da steht es. Dahinter gibt es auch keine Leerzeile mehr.

Gruß
Andy
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 at 09:32:06 (UTC)
Goto Top
Hallo AndyAh,

poste deinen gesamten Code hier doch noch einmal bitte und diesmal in den -Tags vom Forum, damit dein Code leicht zu lesen und zu deuten ist.

Gruß
@d4shoerncheN
Member: catachan
catachan Mar 18, 2013 at 09:32:06 (UTC)
Goto Top
Hi

dann poste doch endlich mal den Code. Ich kann doch nicht hellsehen !!!!! Wenn du Hilfe haben möchtest, dann gib uns die notwendigen Infos

LG
Member: AndyAh
AndyAh Mar 18, 2013 updated at 14:47:08 (UTC)
Goto Top
Hi,

hier nocheimal der gesamte Code:
<?php
$anrede = $_POST["anrede"];  
$vorname = $_POST["vorname"];  
$nachname = $_POST["nachname"];  
$strasse = $_POST["strasse"];  

$plz = $_POST["plz"];  

$email = $_POST["email"];  
$kommentar = $_POST["kommentar"];  

$daten = "adressen";  
$db = mysql_connect ("localhost", "root", "");  
if (!$db) { 
    die('Verbindung schlug fehl: ' . mysql_error());   
	 
$select_db = mysql_select_db($daten); 



$sql_befehl = "INSERT INTO mitgieder(                
                    Anrede,
					Vorname,
					Nachname,
					strasse,
					plz,
					
					EMail,
					Kommentar)
					
					values(
					
					'$anrede',  
					'$vorname',  
					'$nachname',  
					'$strasse',  
					'$plz',  
					
					'$email',  
					'$kommentar')";  
					
$result = mysql_query($sql_befehl);

if ($result)
{
   echo "gespeichert";  
}
else
{
   echo "nicht gespeichert";  
}

mysql_close($db);
			
?>
Gruß
Andy
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 updated at 09:38:36 (UTC)
Goto Top
Dann übernehme ich das nun...
<?php
$anrede = $_POST["anrede"];  
$vorname = $_POST["vorname"];  
$nachname = $_POST["nachname"];  
$strasse = $_POST["strasse"];  

$plz = $_POST["plz"];  

$email = $_POST["email"];  
$kommentar = $_POST["kommentar"];  

$daten = "adressen";  
$db = mysql_connect ("localhost", "root", "");  
if (!$db) {
die('Verbindung schlug fehl: ' . mysql_error());  

$select_db = mysql_select_db($daten);



$sql_befehl = "INSERT INTO mitgieder(  
Anrede,
Vorname,
Nachname,
strasse,
plz,

EMail,
Kommentar)

values(

'$anrede',  
'$vorname',  
'$nachname',  
'$strasse',  
'$plz',  

'$email',  
'$kommentar')";  

$result = mysql_query($sql_befehl);

if ($result)
{
echo "gespeichert";  
}
else
{
echo "nicht gespeichert";  
}

mysql_close($db);

?>

Wie bereits angesprochen, heißt deine SQL-Tabelle wie in Zeile 21 angegeben:
$sql_befehl = "INSERT INTO mitgieder(
oder ehr mitglieder!?

Gruß
Member: AndyAh
AndyAh Mar 18, 2013 updated at 09:46:26 (UTC)
Goto Top
Hi,

es heißt zwar mitglieder aber mein Problem mit der Fehlermeldung behebt das nicht.
Wenn ich die Zeile:

if (!$db) {
die('Verbindung schlug fehl: ' . mysql_error());

auskommentiere, funktioniert es. Aber mein Hauptproblem mit der Nichtspeicherung von Daten ist allerdings auch noch nicht gelöst.

Gruß
Andy
Member: d4shoerncheN
d4shoerncheN Mar 18, 2013 at 09:42:48 (UTC)
Goto Top
Moin,

frage mich nur wie du die Fehlermeldung:
Parse error: syntax error, unexpected end of file in C:\xampp\htdocs\PHP\datenbank.php on line 57

bekommen kannst, wenn in deinem nun kompletten Code gar keine Zeile 57 existiert. Merkwürdig...

Gruß
Member: catachan
catachan Mar 18, 2013 updated at 09:43:31 (UTC)
Goto Top
Hi

bei Zeile 15 Fehlt die geschwungene Klammer zu

if (!$db) { 
die('Verbindung schlug fehl: ' . mysql_error());}   
Member: catachan
catachan Mar 18, 2013 at 09:44:12 (UTC)
Goto Top
Hi

er hat vor dem Posting hier ein paar Zeilen entfernt. Z.B die mir Ort :_)

LG
Member: AndyAh
AndyAh Mar 18, 2013 at 09:52:16 (UTC)
Goto Top
Hi,

der Fehler mit der letzten Zeile ist behoben. Die Verbindung klappt.

Gruß
Andy
Member: AndyAh
AndyAh Mar 18, 2013 updated at 09:58:00 (UTC)
Goto Top
Hi,

die Zeilen habe ich gelöscht, da PHP den Index 'ort', obwohl im aufrufenden Formular existent, nicht findet.

Gruß
Andy
Member: AndyAh
AndyAh Mar 18, 2013 updated at 10:24:47 (UTC)
Goto Top
Hi,

das Problem mit dem Textfeld ist glöst. Fehlt nur noch die Speicherung.

Ich habe eben herausgefunden, das die Speicherung per ODBC doch funktioniert. Nur PHP speichert nicht.

Gruß
Andy
Member: SlainteMhath
SlainteMhath Mar 18, 2013 updated at 10:42:33 (UTC)
Goto Top
Moin,

du warst doch letzte Woche schonmal mit dem gleichen Problem hier, oder?

Ersetze mal bitte
$result = mysql_query($sql_befehl); 
durch
echo "<br>" . $sql_befehl ."<br>";  
Und poste dann das Query hier innerhalb code-tags(!!!) bzw füge das ganze mal in myPHPAdmin als ein und schau ob dann in die Table geschrieben wird. Ansonten: Poste die Fehlermeldung hier (innerhlab code tags)

/EDIT: Und poste doch bitte mal innerhalb code-tags(!!!) die Definition der Tabelle.

lg,
Slainte
Member: AndyAh
AndyAh Mar 18, 2013 at 10:46:23 (UTC)
Goto Top
Hi,

jetzt geht es. Ich habe aus dem INSERT einfach die Datenfeldnamen herausgenommen.

Gruß
Andy
Mitglied: 110135
110135 Mar 18, 2013 at 10:47:45 (UTC)
Goto Top
Hallo,

wie ich sehen solltest du noch einiges in PHP lernen. Aber egal. Jeder fängt einmal an.

$select_db = mysql_select_db($daten); 
Zwecks Fehlerprüfung - du musst das gleiche machen wie mit der Verbindung:

if (!$select_db) { 
die('Verbindung schlug fehl: ' . mysql_error());   
}

Du solltest dir angewöhnen die Spalten entweder alle klein oder alle Groß zu schreiben - so verwirrst du dich nur selbst und schaffst Fehlerquellen. Außerdem solltest du dir einmal PDO anschauen zwecks Sicherheit und MySQL Injections!

Du könntest auch zum Debugging folgendes schreiben:
if ($result)
{
echo "gespeichert";  
}
else
{
echo "nicht gespeichert";  
echo mysql_error();
}

Damit wird die ein Fehler ausgegeben, mit dem es sich leichter arbeiten lässt!


Welchen Fehler erhälst du?
Gruß
Florian.
Member: SlainteMhath
SlainteMhath Mar 18, 2013 at 10:48:08 (UTC)
Goto Top
Zitat von @AndyAh:
Hi,

jetzt geht es. Ich habe aus dem INSERT einfach die Datenfeldnamen herausgenommen.

Gruß
Andy

/facepalm
Mitglied: 110135
110135 Mar 18, 2013 at 10:51:51 (UTC)
Goto Top
Zitat von @AndyAh:
Hi,

jetzt geht es. Ich habe aus dem INSERT einfach die Datenfeldnamen herausgenommen.

Gruß
Andy

Dann hast du doch schon deinen Fehler!!
Hast du die Feldnamen in der Datenbank genauso geschrieben, wie im Script (Groß-/ Kleinschreibung). Du solltest dir angewöhnen, die SQL-Befehler so aussehen zu lassen:

$sql_befehl = "INSERT INTO `mitglieder`(`Anrede`,`Vorname`,`Nachname`) VALUES ('".$anrede."','".$vorname."','".$nachname."');  

und bitte jede Variable $vorname, etc mit mysql_real_escape_string sichern!
Member: SlainteMhath
SlainteMhath Mar 18, 2013 at 10:55:42 (UTC)
Goto Top
Zitat von @110135:
und bitte jede Variable $vorname, etc mit mysql_real_escape_string sichern!

Den Hinweis hat der TE schon beim letzten Thread dieser Art ignoriert :/
Member: dog
dog Mar 18, 2013 at 11:56:17 (UTC)
Goto Top
/facepalm

Dafür gibts doch ein Smiley: m(