Befehl update: Keine Datenänderung
starkoch
- datenbank
Hallo,
ich tüftle an einer Aufgabe nun schon gut 2 Tage und finde einfach den Fehler nicht.
Daten werden aus einer Datenbank ausgelesen und in Textfeldern über value dargestellt. Das funktioniert auch. Nun sollen diese Daten geändert und die geänderten Daten gespeichert werden.
Hier der Code:
---------------------------------------
kundendaten_aufrufen.php:
<?
echo "
<div class="div_2">
<form action="kundendaten_anzeigen.php" method="post">
<table class ="table_div_3">
<tr>
<td>Kundennummer</td>
<td><input type="text" class="defbreite_1" name="kundennummer">
</td>
<td><input type="submit" name="kundendaten_aufrufen" value="Kundendaten aufrufen">
</td>
</tr>
</table>
</form>
</div>";
?>
---------------------------------------
kundendaten_anzeigen.php:
<?
$kundennummer = $_POST["kundennummer"];
$abfrage = "SELECT * FROM kundenlogin WHERE kundennummer = $kundennummer";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->kundennummer == $kundennummer)
{
$kundennummer = $row->kundennummer;
$vorname = $row->vorname;
$name = $row->name;
echo "
<div class="div_3">
<form action="kundendaten_update.php" method="post">
<table class ="table_div_3">
<tr>
<td><input type="text" class="defbreite_1_deaktiv" name="kundennummer" readonly="1" value="$row->kundennummer ">
</td>
</tr>
<tr>
<td><input type="text" class="defbreite_1" name="vorname_update" value="$row->vorname">
</td>
<td><input type="text" class="defbreite_1" name="name" value="$row->name">
</td>
<tr>
<td>
<input type="submit" name="kundendaten_aendern" value="Kundendaten ändern">
</td>
</tr>
</form>
</table>
</div>
";}
else
{
echo "
<div class = "div_4">
Kundennummer nicht vorhanden
</div>
";}
?>
---------------------------------------
kundendaten_update.php:
<?
$kundennummer = $_POST["kundennummer"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
$aendern = "UPDATE kundenlogin
SET kundennummer ='.$kundennummer.',
name ='.$name.',
vorname ='.$vorname.',
WHERE kundennummer = $kundennummer";
$update = mysql_query($aendern);
if(mysql_query == true)
{
echo "Datenänderung erfolgt";
}
else
{
echo "Fehler beim Speichern";
}
?>
-------------------------------------------------------
Wer kann mir auf die Sprünge helfen?
Vielen Dank.
Hello,
$kundennummer = $_POST["kundennummer"];
$vorname = $_POST["vorname"];
$name = $_POST["name"];
diese Kopieraktion bringt keinen wirklichen Vorteil, aber das ist letztendlich deine Entscheidung.
$aendern = "UPDATE kundenlogin
SET kundennummer ='.$kundennummer.',
name ='.$name.',
vorname ='.$vorname.',
WHERE kundennummer = $kundennummer";
es ist äußerst(!) gefährlich, Daten ohne korrekte Maskierung auf die Datenbank loszulassen, siehe für MySQL mysql_real_escape_string
$update = mysql_query($aendern);
if(mysql_query == true)
fällt dir da irgendwas auf? Was soll mysql_query sein (ich meine das zweite...) - eine entsprechende Einstellung bei error_reporting bringt dich auf den Trichter.
Und erneut gilt: du brauchst das Ergebnis der Abfrage nicht auf $update zu speichern, aber das ist Geschmackssache.
echo "Fehler beim Speichern";
und zwar? mysql_error
MfG
Rouven
Danke Rouven für die schnelle Hilfe.
Folgende Fehlermeldung wird jetzt angezeigt:
1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 20
Als Neuling kann ich nicht recht damit was anfangen.
Wo soll ich was nun prüfen? in der datei kundendaten_update.php ?
Hello,
Als Neuling kann ich nicht recht damit was anfangen.
bin auch kein Fan von MySQL-Fehlermeldungen, aber die meisten Datenbanken stellen sich da nur bedingt glücklich an...
$aendern = "UPDATE kundenlogin
SET kundennummer ='.$kundennummer.',
name ='.$name.',
vorname ='.$vorname.',
WHERE kundennummer = $kundennummer";
1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 20
in diesem Fall möchte er dir sagen, dass ihm was fehlt - glaubt er, weil du ihn in ein offenes Messer laufen lässt: hinter '.$vorname.' ist ein Komma, das ihm suggeriert da kämen weitere Felder - in Wahrheit kommt aber die WHERE-Klausel...
MfG
Rouven
Danke Rouven, mit Deiner Hilfe habe ich alle Fehler beheben können.
Es waren "einfache" Tippfehler.
Jetzt kann Weihnachten kommen :-)
Hi
Folgende Fehlermeldung wird jetzt angezeigt:
1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 20Als Neuling kann ich nicht recht damit was anfangen.
Wo soll ich was nun prüfen? in der datei kundendaten_update.php ?
Wenn du kundendaten_update.php aufgerufen hast, wird der Syntaxfehler da sicherlich drin enthalten sein. Kurz um, dein Zusammenbauen der UPDATE-Query erzeugt eine syntaktisch falsche Datenbankanweisung. (Sprich, die Grammatik und evt auch die Rechtschreibung ist falsch)
Lasse dir die zusammengebaute Query vor dem Ausführen einfach mit echo ausgeben, dann siehst du den Fehler meistens schon auf Anhieb.
Wenn ich mal meine Glaskugel arbeiten lasse und ein paar Werte einfüge in deine Query, würde folgendes herauskommen:
UPDATE kundenlogin
SET kundennummer = '523',
name ='Müller',
vorname ='Friederike',
-- ^ Das komma hat da definitiv nix zu suchen
WHERE kundennummer = 523
Und ausserdem, einmal benutzt die Kundennummer mit '' und einmal ohne. Was ist es denn für ein Datentyp? Kann ein Fehler sein, muss nicht. Aber das Komma oben, ist Syntax-Fehler.
Ausserdem brauchst du die Kundennummer nicht unbedingt auch noch mal setzen, die wird sich ja sicherlich nicht ändern?
Ciao, Frank
Ja genau, es waren Rechtschreibfehler, update funktioniert jetzt. Danke nochmal.
echo $begrüßung;
Ja genau, es waren Rechtschreibfehler, update funktioniert jetzt. Danke nochmal.
Funktioniert es auch, bei einem Namen wie O'Brien?
echo "$verabschiedung $name";