Werte in MySQL updaten
Dan_76
- php
Guten Morgen!
Ich hole mit SELECT... Werte aus meiner MySQL-Datenbank und schreibe sie in ein Formular. Das funktioniert:
Nun stehen die Werte in meinem Formular:
<form action="update.php" method="post" name="formularname">
<fieldset>
<legend>Daten</legend>
ID:<br>
<input type="text" name="id" value="<?= $data['ID'] ?>"><br>
ADRESSE:<br>
<input type="text" name="adr" value="<?= $data['ADRESSE'] ?>"><br>
...
<button type="submit">speichern</button>
</fieldset>
</form>
und in der update.php versuche ich dann die geänderten Werte in die DB zu schreiben:
$sql_eintrag = "UPDATE testgeb SET ADRESSE
='".$adr."' WHERE id = '". mysql_escape_string( $_GET['id'] ) ."'";
$eintrag = mysql_query ($sql_eintrag) or die("Fehler: ".mysql_error());
Das läuft zwar ohne Fehlermeldung durch, aber der Datensatz in der Tabelle bekommt kein Update. Hat jemand eine Idee?
Huhu
Das läuft zwar ohne Fehlermeldung durch, aber der Datensatz in der Tabelle bekommt kein Update. Hat jemand eine Idee?
Du hast noch nicht genügend Kaffee GETrunken, lies dannach erstmal die POST und später wirst Du es schon rausfinden ;-)
Viele Grüße
lulu
Hallo lulu,
dein erzieherischer Gedanke mit GET und POST in allen Ehren, aber auch nach dem "Belesen" dazu und dem ändern des SQL-Strings in
$sql_eintrag = "UPDATE testgeb SET PLZ
='".$plz."' WHERE id = '". mysql_escape_string( $_POST['id'] ) ."'";
$eintrag = mysql_query ($sql_eintrag) or die("Fehler: ".mysql_error());
läuft es leider noch nicht :-(
Dan
echo $begrüßung;
[...] nach [...] dem ändern des SQL-Strings in
$sql_eintrag = "UPDATE testgeb SETPLZ
='".$plz."' WHERE id = '". mysql_escape_string( $_POST['id'] ) ."'";
Das ist kein SQL-Statement/-String, das ist PHP-Code, der ein SQL-Statement erzeugen soll. Wie sieht das erzeugte SQL-Statement aus?
Übrigens: mysql_escape_string() ist veraltet und sollte zugunsten von mysql_real_escape_string() nicht mehr eingesetzt werden.
echo "$verabschiedung $name";
Das ist kein SQL-Statement/-String, das ist PHP-Code, der ein SQL-Statement erzeugen soll. Wie sieht das erzeugte SQL-Statement aus?
Wo sehe ich denn das erzeugte SQL-Statement?
Übrigens: mysql_escape_string() ist veraltet und sollte zugunsten von mysql_real_escape_string() nicht mehr eingesetzt werden.
ok, danke
Dan
echo $begrüßung;
Das ist kein SQL-Statement/-String, das ist PHP-Code, der ein SQL-Statement erzeugen soll. Wie sieht das erzeugte SQL-Statement aus?
Wo sehe ich denn das erzeugte SQL-Statement?
Du hast es doch in die Variable $sql_eintrag gesteckt. Gib einfach ihren Inhalt aus.
echo "$verabschiedung $name";
Hallo!
UPDATE testgeb SET ADRESSE
='' WHERE id = '1'
Hmm, also holt er den Wert nicht aus dem Formular?
echo $begrüßung;
UPDATE testgeb SET
ADRESSE
='' WHERE id = '1'Hmm, also holt er den Wert nicht aus dem Formular?
Ja, so sieht es aus. Und die wahrscheinlichste Ursache dafür hat dir ja schon Krueger genannt.
Wenn du beim Entwickeln das error_reporting auf E_ALL stellst werden Meldungen vom Typ E_NOTICE nicht wie in der Standardeinstellung unterdrückt. Diese Notiz-Meldungen geben Hinweise auf Zugriffe auf nicht vorhandene Variablen. Damit hättest du schon eher gesehen, dass $plz oder $adr nicht existieren.
echo "$verabschiedung $name";
Guten Morgen!
Guten Morgen auch dir,
$sql_eintrag = "UPDATE testgeb SET
ADRESSE
='".$adr."' WHERE id = '". mysql_escape_string( $_GET['id'] ) ."'";
Versuche es mal mit $_POST['adr'] statt $adr
Du hast vermutlich ein Problem mit register_globals
Gruß
Krueger
Danke allen Helfern, jetzt geht es und ich merke, dass ich noch viel zu lernen habe :-)