update
pankraz
- datenbank
Hallo zusammen,
Hab ein kleines Problem, kann sich mal jemand das folgende script anschauen und sagen ob er den Fehler sieht. Den es erfolgt leider kein Bearbeitung des Datensatzes.
<?php
if(isset($_POST[datum1]))
{
mysql_connect("server","benutzer","pw");
mysql_select_db("datenbank");
mysql_query("UPDATE form SET titel='$_POST[titel]', text='$_POST[text]', autor='$_POST[autor]', datum='$_POST[datum]', datum1='$_POST[datum1]' WHERE datum1='$_POST[datum1]'");
}
?>
Vielen Dank
Hello,
mysql_query("UPDATE form SET titel='$_POST[titel]', text='$_POST[text]', autor='$_POST[autor]', datum='$_POST[datum]', datum1='$_POST[datum1]' WHERE datum1='$_POST[datum1]'");
Was steht denn in mysql_error()?
Vermutlich "Sie haben einen Fehler in Ihrem SQL-Statement in der Nähe von form
" ...
mals so frei übersetzt...
Frag nach einem Statement immer mysql_errno($connection) ab, ob es gleich 0 ist, sonst war ein Fehler in der Abfrage.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo
Was steht denn in mysql_error()?
Hmm. wo find ich den..? :d
Frag nach einem Statement immer mysql_errno($connection) ab, ob es gleich 0 ist, sonst war ein Fehler in der Abfrage.
Lg
Hallo
Was steht denn in mysql_error()?
Hmm wo find ich den..?
Lg
Hello,
Was steht denn in mysql_error()?
Hmm wo find ich den..?
Dort, woher Du mysql_query() auch hast, vom Server unter der derselben Connection.
Eine Beschreibung findest Du hier:
http://de3.php.net/manual/de/function.mysql-error.php
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hallo,
Also wenn ich es so mache dann kommt 0 heraus. Was kann ich nun daraus schliessen.?
Vielen Dank
Hello,
Also wenn ich es so mache dann kommt 0 heraus. Was kann ich nun daraus schliessen.?
Das Du den Fehler gefunden hast und er nun beseitigt ist.
Das war Dei Statement:
UPDATE form ;; <-- 2 Fehler
SET
titel='$_POST[titel]',
text='$_POST[text]',
autor='$_POST[autor]',
datum='$_POST[datum]',
datum1='$_POST[datum1]'
WHERE
datum1='$_POST[datum1]'
Ich habe darin auf Anhieb zwei Fehler entdeckt.
Außerdem steckt eine Unsicherheit bezüglich der Variablen drin, auf die ich mich nicht einlassen würde.
Die Elementebezeichner der Arrays würde ich, auch wenn es so funktioniert, nicht ohne Häkchen benutzen. Wenn man dieselbe Variable dann nämlich in einen anderen Kontext setzt, was hier notwenid ist, dann kann es zur Verwechslung nit Konstanten kommen.
Eine dicke fette Sicherheitslücke ist außerdem drin.
Leider warnt einen mysql_error() davor nicht.
Lies Dir dazu mal bei Wikipedia das Kapitel über SQL-Injection durch
http://de.wikipedia.org/wiki/SQL_Injection
Und bei PHP gibt es auch eins:
http://de3.php.net/manual/de/security.database.sql-injection.php
§sql="
UPDATE form ;; <-- noch 2 Fehler
SET
titel='".mysql_real_escape_string($_POST['titel'],$con)."',
text='".mysql_real_escape_string$_POST['text'],$con)."',
autor='".mysql_real_escape_string$_POST['autor'],$con)."',
datum='".mysql_real_escape_string$_POST['datum'],$con)."',
datum1='".mysql_real_escape_string$_POST['datum1'],$con)."'
WHERE
datum1='".mysql_real_escape_string$_POST['datum1'],$con)."'";
$res = mysql_query($sql, $con(;
if ($mysql_errno($con) > 0)
{
## Fehlerbehandlung
## $mysql_error($con) enthält jetzt die Fehlerbeschreibung
}
else
{
## weitermachen
}
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom