Datensatz - SQL-Datenbanl über PHP ändern funktioniert nicht
Hallo,
ich versuche mit PHP eine Seite aufzubauen mit dieser ich einen Datensatz ändern kann. Leider bekomme ich immer einen Fehler.
Ich habe erst vor kurzem damit angefangen PHP-Scripte zu schreiben. Nun habe ich schon seit 3 Tage dieses Problem und komme nicht auf den Fehler. Vieleicht hat von euch jemand eine Ahnung.
Leider wird kein Datensatz angezeigt.
Hier mein einen Ausschnitt des Script zur Auswahl des Datensatzes:
Hier das Script das zur Bearbeitung da sein soll hier wird auch wenn ich mit echo den Wert von $sqlab anzeigen lasse, kommt meiner Meinung nach der richtige heraus: z.B: "select * from dvd where dvdtitel = Film ABC"
Danke
ich versuche mit PHP eine Seite aufzubauen mit dieser ich einen Datensatz ändern kann. Leider bekomme ich immer einen Fehler.
Ich habe erst vor kurzem damit angefangen PHP-Scripte zu schreiben. Nun habe ich schon seit 3 Tage dieses Problem und komme nicht auf den Fehler. Vieleicht hat von euch jemand eine Ahnung.
Leider wird kein Datensatz angezeigt.
Hier mein einen Ausschnitt des Script zur Auswahl des Datensatzes:
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td><input type='radio' name='auswahl'";
echo " value='" . $dsatz["dvdtitel"] . "' /></td>";
// echo "<td> $lf </td>";
echo "<td>" . $dsatz["dvdtitel"] . "</td>";
echo "<td>" . $dsatz["fsk"] . "</td>";
echo "<td>" . $dsatz["laenge"] . "</td>";
echo "<td>" . $dsatz["genre"] . "</td>";
echo "<td>" . $dsatz["ort"] . "</td>";
echo "</tr>";
$lf = $lf +1;
}
echo "</table>";
Hier das Script das zur Bearbeitung da sein soll hier wird auch wenn ich mit echo den Wert von $sqlab anzeigen lasse, kommt meiner Meinung nach der richtige heraus: z.B: "select * from dvd where dvdtitel = Film ABC"
$sqlab = "select * from dvd where dvdtitel = " . $_POST["auswahl"];
echo "$sqlab";
$res = mysql_query($sqlab);
$dsatz = mysql_fetch_assoc($res);
echo "<form action = 'geaendert.php' method='post'>";
echo "<p><input name='dvdtitel' value='" . $dsatz["dvdtitel"] . "'/> DVD-Titel</p>";
echo "<p><input name='fsk' value='" . $dsatz["fsk"] . "'/>FSK</p>";
echo "<p><input name='laenge' value='" . $dsatz["laenge"] . "'/>Laufzeit</p>";
echo "<p><input name='genre' value='" . $dsatz["genre"] . "'/>Genre</p>";
echo "<p><input name='ort' value='" . $dsatz["ort"] . "'/>Aufbewahrungsort</p>";
echo "<p><input type='submit' value='Ändern'/>";
echo "<p><input type='reset' value='Zurücksetzen'/></p>";
echo "</form>";
}
echo "</table>";
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 124583
Url: https://administrator.de/contentid/124583
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Wolf666,
Wäre nicht "das Richtige" eher (als Stringinhalt der Variablen $sqlab)
"select * from dvd where dvdtitel = 'Film ABC' "
-bzw-
"select * from dvd where dvdtitel Like 'Film ABC%' "
???
Grüße
Biber
:wenn ich mit echo den Wert von $sqlab anzeigen lasse, kommt meiner Meinung nach der richtige heraus:
z.B: "select * from dvd where dvdtitel = Film ABC"
z.B: "select * from dvd where dvdtitel = Film ABC"
Wäre nicht "das Richtige" eher (als Stringinhalt der Variablen $sqlab)
"select * from dvd where dvdtitel = 'Film ABC' "
-bzw-
"select * from dvd where dvdtitel Like 'Film ABC%' "
???
Grüße
Biber
<OT>
@nxclass
Wenn Du einen Weg gefunden hast, damit die Kunden Deiner Videothek die ID 88453 für "GZSZ Folge 2756" und die ID 422277 für "Blutjunge rothaarige Praktikantinnen" auswendig wissen....
--> dann ist Deine Videothek sicherlich die Perfomanteste nördlich von Wuppertal.
Andererseits....
bei Kunden, die so drauf sind, würde ich mir lieber ein Extrapäckchen Munition für die Pumpgun bereitlegen.
Grüße
Biber
</OT>
@nxclass
Wenn Du einen Weg gefunden hast, damit die Kunden Deiner Videothek die ID 88453 für "GZSZ Folge 2756" und die ID 422277 für "Blutjunge rothaarige Praktikantinnen" auswendig wissen....
--> dann ist Deine Videothek sicherlich die Perfomanteste nördlich von Wuppertal.
Andererseits....
bei Kunden, die so drauf sind, würde ich mir lieber ein Extrapäckchen Munition für die Pumpgun bereitlegen.
Grüße
Biber
</OT>
An deinem ersten Code-Schnippel ist erstmal nichts groß falsch.
Aber
lässt sich als:
schöner schreiben.
Dein zweites Schnippsel hat es aber in sich:
Das ist natürlich vollkommener Quark.
Wenn du nur eine Variable ausgeben willst kommen da keine Anführungszeichen drumherum.
...wäre also besser.
Noch besser wäre aber die extra für solche Fälle vorhandene var_dump Funktion zu benutzen:
Und wozu gehört eigentlich?
(Zeile 18)
Aber kommen wir zum eigentlichen Problem:
Jedesmal, wenn jemand so einen Befehl schreibt stirbt irgendwo ein kleines Kätzchen.
Lies dir doch bitte mal folgenden Artikel durch: http://de.wikipedia.org/wiki/SQL-Injection
Der erklärt das Problem recht gut.
Und für Demnächst:
Während du ein Script entwickelst (niemals im produktiven Einsatz) kommt immer folgendes ganz oben in die Datei:
Grüße
Max
Aber
$lf = $lf +1;
$lf++;
Dein zweites Schnippsel hat es aber in sich:
echo "$sqlab";
Wenn du nur eine Variable ausgeben willst kommen da keine Anführungszeichen drumherum.
echo $sqlab;
Noch besser wäre aber die extra für solche Fälle vorhandene var_dump Funktion zu benutzen:
var_dump($sqlab);
Und wozu gehört eigentlich?
}
Aber kommen wir zum eigentlichen Problem:
$sqlab = "select * from dvd where dvdtitel = " . $_POST["auswahl"];
Jedesmal, wenn jemand so einen Befehl schreibt stirbt irgendwo ein kleines Kätzchen.
Lies dir doch bitte mal folgenden Artikel durch: http://de.wikipedia.org/wiki/SQL-Injection
Der erklärt das Problem recht gut.
Und für Demnächst:
Während du ein Script entwickelst (niemals im produktiven Einsatz) kommt immer folgendes ganz oben in die Datei:
ini_set('display_errors','On');
error_reporting(E_ALL|E_STRICT);
Grüße
Max