PHP führt MySQL-Query nicht aus?

  • Hallo,


    ich habe ein kleines PHP-Skript gebastelt, welches nach einer Eingabe Dinge in eine Datenbank schreiben soll.
    Leider schriebt das Skript nur, wenn der erste Server ausgewählt wurde etwas in die Datenbank.


    Woran kann das liegen?


    lg

    • Offizieller Beitrag

    Ich weiß nicht ob es daran liegt aber dennoch.
    Du fühhst schon mysql_query aus: $pw = mysql_query("INSERT INTO Users_AL (`Name`, `Passwort`) VALUES ('".$username."', '".$passwort."')");

  • 1. SQL Injections geprüft?
    2. @ vor $_POST?!
    3. Wie gesagt, doppeltes Ausführen der Query.
    4. Warum du das ganze nicht vernünftig debuggst, sondern stattdessen hier fragst, verstehe ich mitnichten. In Zeile 16 bekommst du das auch hin.
    5. Erfolg auf Englisch schreibt sich "success"


  • Nun hab ich es so.
    Doch leider fügt er, auch wenn ich "RRR" ausgewählt habe auf der Seite alles in die "AL"-Tabelle...


    Trooper: das mit dem sucess soll kein Englisch, sondern einfach nur eine var sein.


  • So klappts bei mir :D

  • Ich empfehle dir PDO für MySQL Statement zu verwenden da es SQL Injection schützt.


    Und solltest du beim klassischen mysql_query() beiben dann mach es bitte mit mysql_escape_string() bzw. mit mysql_real_escape_string(), also so:

    PHP
    $abfrage = mysql_real_escape_string($_POST['abfrage']);


    wobei die variante nur sehr gering hilft.


    Liebe Grüße
    palwal

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Um meinen Vorredner mal zu komplettieren ein kleiner Exkurs zu SQL Injections.
    Es gibt in SQL eine Sicherheitslücke, die es ermöglicht, durch Usereingaben einem Nutzer, der weiß, wie er es macht, Tabellen zu
    manipulieren, zu löschen, neue zu erstellen usw, sofern man im Code nicht davor schützt. Dafür braucht man kein großer 1337 L33t Intern3t G4ngst4r Hacker zu sein, das kann jeder, der eine Suchmaschine bedienen kann.


    Um davor zu schützen, liefert PHP eine Funktion mit, die einen String escapen kann. Sobald man diese Funktion richtig anwendet, ist man auf der sicheren Seite.



    Beispiel:

    PHP
    mysql_query("SELECT * FROM accounts WHERE userName = '".$_GET["username"]."'");


    (Von Dir so angewendet)
    Bei diesem Beispiel könnte der User nun die gesamte Tabelle manipulieren.
    Die Lösung:


    PHP
    mysql_query("SELECT * FROM accounts WHERE userName = '".mysql_real_escape_string($_GET["username"])."'");


    Ja, es ist nervend auf Dauer, aber für die Sicherheit sollte keine Mühe gescheut werden.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • John_Hunter wie bereits in meiner Antwort erhalten habe ich das bereits geschrieben :)
    Aber wie gesagt mysql_real_escape_string() hilft nicht wirklich! PDO ist zwar ein wenig mehr aufwand aber Sicherheit geht vor.


    http://us3.php.net/pdo

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • John_Hunter wie bereits in meiner Antwort erhalten habe ich das bereits geschrieben :)
    Aber wie gesagt mysql_real_escape_string() hilft nicht wirklich! PDO ist zwar ein wenig mehr aufwand aber Sicherheit geht vor.


    http://us3.php.net/pdo


    Deswegen auch:

    Zitat

    Um meinen Vorredner mal zu komplettieren

    Meines war etwas ausführlicher und weist auch auf die Konsequenzen einer Nichtbeachtung hin. ;)


  • Ich verstehe nicht ganz, ich habe diesen ersten von dir genannten Code nirgends in meinem Skript o.o

  • Also wenn du es in PDO machen willst könnte es etwa so Aussehen




    * Der Code wurde getestet und Funktioniert ohne Probleme.

    Einmal editiert, zuletzt von SLaYz ()

  • Und was daran ist nun besser, außer dass du PDO verwendest? Das ist so pseudo professionell, zum lernen absolut kontraproduktiv.


    Aber wie gesagt mysql_real_escape_string() hilft nicht wirklich!


    Doch, natürlich. PDO macht intern auch nichts anderes als die Parameter für Statements zu escapen.


    Man sollte aber aus ganz anderen Gründen die MySQL-Extension mehr nutzen: Deprecated und inzwischen, seit 5.5, entfernt.


    Wenn wir schon beim Thema sind, hier ein wenig Lektüre: http://code.tutsplus.com/tutor…should-you-use--net-24059


    Und nun ist auch mal Ende mit dem ganzen Geschwafel, das Problem ist gelöst.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Du musst nicht zwangsweise auf PDO umsteigen, aber zumindest weg von der alten MySQL-Extension.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.