MySQL/PHP4/PHP5 Fehler!?

  • Themenstarter Themenstarter moritz115
  • Beginndatum Beginndatum
M

moritz115

Hallo,

mir wird durch ein Mysql error() ein Fehler angezeigt:

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 'WHERE ID = '28'' at line 1

Durch diesen Code:


PHP:
$eintrag = "INSERT INTO wwp_page (a_hinweis) VALUES ('".$_POST['a_hinweis']."') WHERE ID = '".$_GET['seite']."'";
$eintragen = mysql_query($eintrag)or die(mysql_error());


Kann es sein, das dies ein PHP4 COde ist? Oder wodurch kommt diese Fehleranzeige?

mfg
moritz115
 
Zahlen dürfen nicht in Anführungszeichen stehen, da sie sonst nicht korrekt verglichen werden. Also einfach die SingeQuotes um die Id entfernen. Außerdem solltest du nicht direkt aus $_GET die Prüfung starten, da hier sehr leicht Schadcode eingespeist werden kann!
Stichwort MySQL Injection.

Da es sich hier um eine Zahl zu handeln scheint wäre ein Typecasting eine ausreichende Sicherung

PHP:
$Page = (int)$_GET['seite'];

Kann natürlich auch direkt im Query gemacht werden, auf die selbe Weise.


e:/ Danke Sven, hab ich doch glatt übersehen, dass da INSERT mit WHERE benutzt wird :eek:
 
Hallo,

danke für deine Hilfe. Jetzt kommt folgender Fehler:


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 '(a_hinweis) VALUES ('') WHERE ID = '29'' at line 1

Bei folgendem Code:

PHP:
$eintrag = "Update wwp_page (a_hinweis) VALUES ('".$_POST['a_hinweis']."') WHERE ID = '".$_GET['seite']."'";
$eintragen = mysql_query($eintrag)or die(mysql_error());


Was nun?
moritz115
 
Hallo,

könnt ihr bitte meinen COde ganz verbessern?

Bis jetzt bin ich so weit:

PHP:
$eintrag = "Update wwp_page SET (a_hinweis) VALUES ('".$_POST['a_hinweis']."') WHERE ID = '".(int)$_GET['seite']."'";
$eintragen = mysql_query($eintrag)or die(mysql_error());



Fehler:
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 '(a_hinweis) VALUES ('') WHERE ID = '29'' at line 1

Klappt aber auch nicht :(
 
Zuletzt bearbeitet von einem Moderator:
Versuch es mal so:

PHP:
$eintrag = "Update wwp_page SET a_hinweis = '" . $_POST['a_hinweis'] . "' WHERE ID = '" . $_GET['seite'] . "'";
 
Würden wir den Code verbessern, hättest du erst nichts gelernt und würdest es das nächste mal wieder nicht können.

Ich hab dich auf MySQL injection hingewiesen, dazu findet man mehr als Massenhaft in Google, einfach suchen.

PHP:
$Inhalt1 = (int)$_GET['seite'];

Und dann einfach $Inhalt1 benutzen anstatt der Get-Variablen.

Außerdem solltest du auch deinen Post-Wert nicht direkt der Datenbank übergeben, mysql_real_escape_string() solltest du auf jeden Fall darauf anwenden!


Was allgemein an deinem Query falsch ist, hat Saftmeister bereits erwähnt.
 
Hallo,

meinen Code werde ich dann auf die Sicherheit später noch einmal bearbeiten! Als Saftmeister den richtigen Code gepostet hat, habe ich es auch gerade geschafft^^ (Fortschritt :D)
Aber leider funktionier es trotzdem nicht. Der Hinweis wird nicht eingetragen :( Vielleicht wird er aus dem Formular nicht richtige übergeben?
Hier der "Übergeben-Code":


PHP:
  echo '<form action="' . $PHP_SELF . '" method="post">' .
'<a href="an_admin.php?seite='.$ausgabe['ID'].'" onclick="submit();"> Page an Admin zur Prüfung weiterleiten.</a>' .' <input type="text" name="a_hinweis"/>';
'</form>';


Und der, mit dem eingetragen werden soll:


PHP:
$eintrag = "Update wwp_page SET a_hinweis = '" . $_POST['a_hinweis'] . "' WHERE ID = '" . $_GET['seite'] . "'";
$eintragen = mysql_query($eintrag)or die(mysql_error());



Wo liegt der Fehler? Vielen Dank für eure Hilfe!
moritz115
 
Schreib mal

PHP:
echo "<pre>";
print_r($_POST);
echo "</pre>";

an den Beginn deiner Datei und prüfe ob in Post überhaupt etwas drin steht.


Vor dein "</form>"; gehört noch ein echo, sollte aber eigentlich einen ParseError oder Notice werfen..
 
Zurück