WinFuture-Forum.de: [erledigt]MySQL UPDATE - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[erledigt]MySQL UPDATE funktioniert nicht :(


#1 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 19:39

Hallo alle zusammen,

hab ein blödes Problem, an dem ich gerade festhänge :(
Und zwar bekomme ich folgendes nicht umgesetzt:

<div id="profil_informationen">
<h4>Profilinfos</h4>
<form action="" method="post">
<div style="width:250px; background-color:;">
Alter: <input type="text" name="alter" /><br /><br />
Interessen: <input type="text" name="interessen" /><br clear="both" /><br />
<input type="reset" value="Reset" name="reset" /><input type="submit" name="submit" value="&Auml;ndern" />
</div>
</form><br />

<?php
$alter = $_POST['alter'];
$interessen = $_POST['interessen'];

if($_POST['submit'])
{
	mysql_connect('localhost','root','***');
	mysql_select_db('minecraftnoobs') or die("Datenbank nicht gefunden.");
	mysql_query("UPDATE login SET alter='".$alter."', interessen='".$interessen."' WHERE benutzer='".$_SESSION['login']."'") or die(mysql_error());
}
?>
</div>


Bekomme folgende Fehlermeldung:

Zitat

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 'alter='300', interessen='nix' WHERE benutzer='J000S'' at line 1


Ich steh grad irgendwie voll aufm Schlauch... hoffe, jemand kann mir helfen.

Dieser Beitrag wurde von J000S bearbeitet: 09. Juli 2012 - 18:14

0

Anzeige



#2 Mitglied ist offline   LostSoul 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 01. Juni 05
  • Reputation: 11

geschrieben 08. Juli 2012 - 19:48

Guten Tag.

Ich bin mir gerade nicht ganz sicher, wie "quengelig" da MySQL (zu recht) ist, aber du verwendest als Feldnamen Funktionsbezeichnungen (ALTER).

Nachtrag: Davon mal ganz ab ist das Skript eine Einladung für SQL-Injections...
0

#3 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 08. Juli 2012 - 19:55

Ich hab auch noch was, wo ich nicht weiß, wie wichtig das ist aber abschließend macht man doch solch ein Semikolon am Ende von dem Query-Ding. also an dieser Stelle

...zer='".$_SESSION['login']."' ;") or die(...


Beitrag anzeigenZitat (LostSoul: 08. Juli 2012 - 19:48)

...
Nachtrag: Davon mal ganz ab ist das Skript eine Einladung für SQL-Injections...


Einladung ist vielleicht das falsche Wort. Aufforderung trifft es besser.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#4 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 19:58

Beitrag anzeigenZitat (Holger_N: 08. Juli 2012 - 19:55)

Einladung ist vielleicht das falsche Wort. Aufforderung trifft es besser.


Jaja hab ich anderswo auch schon auf die Finger bekommen. ABER Es ist ja noch nichtmal fertig und es läuft bei mir erstmal lokal ;)

Das Semikolon ist mir neu... hilft aber auch nix :(
0

#5 Mitglied ist offline   LostSoul 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 01. Juni 05
  • Reputation: 11

geschrieben 08. Juli 2012 - 20:04

Guten Tag.

Beitrag anzeigenZitat (J000S: 08. Juli 2012 - 19:58)

Jaja hab ich anderswo auch schon auf die Finger bekommen. ABER Es ist ja noch nichtmal fertig und es läuft bei mir erstmal lokal ;)


Das ist die Standardausrede von so vielen Leuten. Und "komischerweise" sehen dann die finalen Skripte doch ähnlich aus. Weil - ebenfalls "komischerweise" - dann am Ende plötzlich doch keine Motivation mehr da ist, noch mal ein größeres Skript komplett auf ordentliche Syntax, mögliche Injections etc. pp. zu prüfen. Aber klar, bei dir ist das anderes.

Merke: Man programmiert immer richtig. Oder falsch und fehleranfällig.
0

#6 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 08. Juli 2012 - 20:25

Also ich hab, nachdem ich von diesen prepared statements Dingern gehört habe (und die nach ner Weile endlich verstanden haben, also zumindest funktionierend hinbekommen habe) sämtliche Abfragen meiner Seite damit ausgerüstet. Bei sowas hab ich sofort die Motivation, weil ich keine fertigen Seiten leiden kann, lieber immer dran rumbaue und sobald mir was Neues einfällt, dass immer gleich eingearbeitet werden muß.
Manchmal baue ich sogar kleine Fehler ein, um zu gucken, ob der Kunde das auch alles nutzt und sich meldet, wenn er ein Problem entdeckt und ich dann wieder rumbauen kann.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#7 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 20:38

Also ich bin leider nicht so der PHP und MySQL Experte... nach etwas googlen bin ich etwas schlauer zu den Injections geworden.

Ich habe folgendes gefunden:

$alter = sqlSafeString($_POST['alter']);
$interessen = sqlSafeString($_POST['interessen']);


würde das schon reichen?
0

#8 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 08. Juli 2012 - 20:49

Beitrag anzeigenZitat (J000S: 08. Juli 2012 - 20:38)

Also ich bin leider nicht so der PHP und MySQL Experte... nach etwas googlen bin ich etwas schlauer zu den Injections geworden.

Ich habe folgendes gefunden:

$alter = sqlSafeString($_POST['alter']);
$interessen = sqlSafeString($_POST['interessen']);


würde das schon reichen?


Ich glaub, da mußt du dann aber auch erstmal eine Funktion schreiben, die einen sicheren String macht. Ich hab bei mir alles auf diesen Datenbankzugriff mit PDO umgebaut und dann eben diese Prepared Statements. Weiterhin filtere ich aus übergebenen Variablen so typische sql-Befehle heraus, die für Injektionen benutzt werden könnten.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#9 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 21:11

Hm ich dachte mir schon, dass das so zu einfach wäre. Dann muss morgen mal etwas genauer danach schauen.

Aber mal BTT wie werde ich das o.g. Problem los?

Zu den Injections hab ich hier schon was gefunden :)

Dieser Beitrag wurde von J000S bearbeitet: 08. Juli 2012 - 21:25

0

#10 Mitglied ist offline   LostSoul 

  • Gruppe: aktive Mitglieder
  • Beiträge: 129
  • Beigetreten: 01. Juni 05
  • Reputation: 11

geschrieben 08. Juli 2012 - 21:27

Guten Tag.

Hast du den von mir aufgebrachten Hinweis aus der ersten Antwort schon mal berücksichtigt?
0

#11 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 08. Juli 2012 - 21:29

Probier mal

mysql_query("UPDATE `login` SET `alter` = '".$alter."', `interessen` = '".$interessen."' WHERE `benutzer` = '".$_SESSION['login']."' ;")


und/oder probiere auch den Vorschlag von LostSoul und benenne die Spalte "alter" mal um.

Dieser Beitrag wurde von Holger_N bearbeitet: 08. Juli 2012 - 21:29

Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#12 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 21:37

Beitrag anzeigenZitat (Holger_N: 08. Juli 2012 - 21:29)

mysql_query("UPDATE `login` SET `alter` = '".$alter."', `interessen` = '".$interessen."' WHERE `benutzer` = '".$_SESSION['login']."' ;");


Hat funktioniert... Danke :)

@LostSoul

Zitat

du verwendest als Feldnamen Funktionsbezeichnungen (ALTER)

hatte nicht so ganz verstanden, was damit gemeint ist...
0

#13 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 08. Juli 2012 - 21:47

Beitrag anzeigenZitat (J000S: 08. Juli 2012 - 21:37)

Hat funktioniert... Danke :)



Das ist aber nur, dass es erstmal technisch funktioniert. Auf jeden Fall muß das noch gesichert werden.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#14 Mitglied ist offline   J000S 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.051
  • Beigetreten: 13. Juni 09
  • Reputation: 38
  • Geschlecht:Männlich
  • Wohnort:C:\Home
  • Interessen:Computer, Feuerwehr, Sport

geschrieben 08. Juli 2012 - 21:51

ich werd mich morgen mal dran haun :) Danke aber schon mal soweit.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0