Daten in einer Datenbank akktualisieren

Amenkor

Ensign
Registriert
Okt. 2014
Beiträge
174
Hallo,

Ich versuche gerade die Daten aus einer Datenbank zu ändern, diese sollen anschließend wieder an den selben Stellen eingetragen werden.

case "edit":

$update = "SELECT * FROM thinclients WHERE mac = \"$mac\"";
$data = mysql_fetch_array(mysql_query($update));

echo "<form method=\"post\" action=\"thinclient_action.php\">\n";
echo "<br>Mac-Adresse:<br> <input type=\"text\" name=\"MAC\" value=\"$data[0]\">\n";
echo "<br>Name:<br> <input type=\"text\" name=\"Name\" value=\"$data[1]\">\n";
echo "<br>Template:<br> <input type=\"text\" name=\"Template\" value=\"$data[2]\">\n";
echo "<br>Kommentar: <br> <input type=\"text\" name=\"Kommentar\" value=\"$data[3]\">\n";
echo "<br><br><input type=\"submit\" name=\"action\" class=\"formbtn\" value=\"Daten aendern\">\n";
echo "</form>\n";

$update = "UPDATE thinclients SET mac = \"$data[0]\", name = \"$data[1]\", template = \"$data[2]\", kommentar = \"$data[3]\" WHERE mac = \"$mac\"";
mysql_query($update);
$update = "SELECT * FROM thinclients WHERE mac = \"$mac\"";
$data = mysql_fetch_array(mysql_query($update));
print_r($data);

$result4 = mysql_query($sql4);
break;


Die Insert Funktion:
$insert = mysql_query("INSERT INTO thinclients(mac, name, template, kommentar) VALUES('".$MAC."', '".$_POST['Name']."', '".$_POST['Template']."', '".$_POST['Kommentar']."')");


Wenn ich diese jedoch ausführe, wird immer ein neuer Eintrag erstellt.

Ich komme da leider nicht weiter und hoffe, dass mit jemand helfen kann.
 
Die Frage ist nicht eindeutig zu beantworten.

  1. Würde ich sicherstellen, dass man sich im "edit"-case befindet und nicht irgendwo wo das Insert-Statement ausgeführt wird, bspw. indem du die SQL-Statements ausgeben lässt.
  2. Änderst du evtl. das mac-Attribut im Update-Statement und gibst danach die Datensätze für das alte mac-Attribut aus (ka ob das so gewollt ist).
  3. Solltest du alle Eingabeparameter vorverarbeiten und gegen SQL-Injections schützen (Stichwort: Escapen/Prepared Statements).
  4. Ist die mysql_query Funktion inzwischen auch schon veraltet.
  5. Was in der Variable $sql4 steht ist nicht ersichtlich.
 
Zurück
Oben