Es wird nicht mehr in die Datenbank geschreiben HILFE

AIKler

Erfahrenes Mitglied
Hallo

bräuchte mal schnelle Hilfe von einem MySQL-Freak! :)

meine nachforschungen haben leider nichts ergeben:google::mad::confused:

PHP:
weiter php

<?php

include "./config.php";

if ($_POST['name'] && $_POST['nachricht'])
{
	$qr = mysql_query("SELECT * FROM gaestebuch ORDER BY 'index' DESC LIMIT 1", $cid);
	list($mindex) = mysql_fetch_row($qr);
	$mindex = $mindex + 1;
	mysql_query("INSERT INTO gaestebuch VALUES ($mindex,'".$_POST['name']."','".$_POST['email']."','".$_POST['nachricht']."','".$_POST['bemerkung']."')", $cid);
	unset($_POST['name']);
}


?>

Diese Datei schreibt Einträge in ein selber geschriebenes Gästebuchskript. Das hat schon mal Funktioniert, deshalb jetzt die Frage an Euch:

Ist da ein Fehler den ich jetzt nach fast 3 Std. einfach nur Überlese oder hab ich da einen Denkfehler?

Vielen Dank im Vorraus

Christoph
 
Hi erstmal.

Wieso benutzt du nicht eine Spalte mit auto increment für die Id?
So musst du kein Select voher absetzen.

Du überprüftst nach dem Code überhaubt nicht, was eingegeben wird. Das könnte sehr leicht für einen Angriff genutzt werden.

Warum er nicht mehr in die Db schreibt konnte ich nicht erkennen.
Pack dein SQL-Insert-Statement doch mal in ne Variable und lass sie dir ausgeben.

Sollte es aber voher funktioniert haben, so dürfte der Fehler eher Datenbankseitig sein. Außer du hast etwas geändert und/oder dein Hoster.
 
Wegen geändert:

naja geändert habe ich ein klein wenig das stimmt.
jedoch kann ich immer einen 2. Eintrag schreiben. habe auch schon Einträge aus der Datenbank gelöscht und dann neue geschrieben. bei 2 ist dann immer schluss

Überprüfungen hab ich keine drin, da ich auch nur SQL-User bin und eigentlich keine Ahnung von hab (Bücherlogik halt)

Deshalb bin ich auch froh dass es solche Foren gibt wo einem immer geholfen wird.

Danke
 
Wegen geändert:
naja geändert habe ich ein klein wenig das stimmt.
jedoch kann ich immer einen 2. Eintrag schreiben. habe auch schon Einträge aus der Datenbank gelöscht und dann neue geschrieben. bei 2 ist dann immer schluss

Das spricht meiner Meinung dafür, dass da eine Schlüssel-Verletzung auftritt.

Ansonsten kann ich Dunas nur zustimmen.
Am besten die Spalte ID mit Autoincrement versehen. Das macht das ganze Teil schneller und weniger Aufwendig im Code.
Außerdem muss du echt noch eine Überprüfung der Eingabedaten einbauen -> Thema SQL Injection.
 
Das spricht meiner Meinung dafür, dass da eine Schlüssel-Verletzung auftritt.

Hat mich auf eine Idee gebracht *grins*

hab jetzt den Primarykey rausgenommen und promt; es geht jedoch liefert mir der Teil des phpSkriptes falsche Werte zurück


PHP:
$qr = mysql_query("SELECT * FROM gaestebuch ORDER BY 'index' DESC LIMIT 1", $cid);
list($mindex) = mysql_fetch_row($qr);
echo "$mindex";
$mindex = $mindex + 1;
echo "$mindex";


1. Echo liefert immer 1
2. Echo liefert immer 2

sollen aber die Einträge hochzählen
1. Echo: anzahl der Gästebucheinträge im moment
2. Echo: um eins erhöht :-)

könnt ihr mir sagen wo der Fehler ist, wenn ihr noch dei $cid braucht geb ich se raus aber wie gesagt des geht jetzt nur dass er nicht richtig zählt
 
Zurück