PHP - Problem mit MySQL

  • Ich habe vor einigen Tagen mit PHP und dem üblichen angefangen und bin gerade dabei eine Funktion zu erstellen,
    welche Texte abspeichert und auch durch so genannte <form> aufrufen kann. Ich habe ein bereits einen Code
    erstellt und es ist mir auch bewusst, dass dieser Code Fehler enthält, aber ich würde mich freuen, wenn man mir
    den richtigen Weg zeigt bzw. auf die Fehler hinweist und mir den richtigen Weg zeigt. Mein Problem ist, dass
    MySQL den Inhalt aus den <form> nicht abspeichern möchte. Ich habe hier 5 Bilder gemacht, wie es bei mir
    aufgebaut ist:


    Dies ist die Hauptdatei, wo alles anfängt:


    Weiterhin meine PHP-Datei mit der ich die Verbindung zur MySQL Datenbank aufbaue:


    Danach die zwei Forms mit Buttons, aber in zwei Dateien verteilt. Dies hier ist die "Abruf"-Datei, wenn etwas gespeichert ist:


    Hier ist die "Speichern"-Datei:


    Und das hier ist die Datei, welche auf das Resultat leitet bzw. den Eintrag macht oder abruft. Je nachdem, was man gewählt hat.
    Diese erzeugt die Probleme. Sie will die Eingabe in die Box und die Bestätigung durch den Button nicht in die Datenbank "inserten".


    Ich hoffe, man kann mir dabei helfen und mich auf meine Fehler hinweisen. Bin noch sehr neu in dem Bereich :D

  • Unteranderem ist "savename" und "callname" in beiden Fällen in der query nur ein String und keine Variable. Solltest du anpassen, ist denke ich nicht die Idee.


    "savename" ist ein String also musst du diesen in der Query auch als string angeben. Sprich:

    PHP
    $sql = "INSERT INTO savesmth (message) VALUES ('savename')";

    Das gleiche bei Like da es dort auch ein string ist:


    PHP
    $sql2 = "SELECT * FROM savesmth WHERE body like '%vallname%";

    Und die solltest mit den Daten auch was machen, du setzt bis jetzt ja nur eine query ab ^^


    Außerdem will ich dich darauf hinweisen das du bei Insert deine Nachricht in 'message' schreibst und beim auslesen den 'body' ausliest ;)

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Wieso machst du das denn in so vielen Dateien? ^^ Ist ja auch egal.
    Also du musst die Variablen mit $ Zeichen angeben. Das wird am Anfang etwas komisch, denn man darf nicht ' mit " vermischen bzw beide richtig behandeln.

    PHP
    $mysqli->query("INSERT INTO t (deinfeld, deinzweitesfeld) VALUES ($_GET['deinget'], $_GET['zweitesget');"))

    Sonst halt vorher
    $GET_1 = $_GET['deinget'];

  • Wieso machst du das denn in so vielen Dateien? ^^ Ist ja auch egal.
    Also du musst die Variablen mit $ Zeichen angeben. Das wird am Anfang etwas komisch, denn man darf nicht ' mit " vermischen bzw beide richtig behandeln.

    PHP
    $mysqli->query("INSERT INTO t (deinfeld, deinzweitesfeld) VALUES ($_GET['deinget'], $_GET['zweitesget');"))

    Sonst halt vorher
    $GET_1 = $_GET['deinget'];

    Ich weiß nicht... wenn es in irgendeinerweise schadet bzw. Schäden anrichten kann, dann bitte Bescheid sagen und
    am besten sagen, wie man es richtig machen sollte. Ansonste dankesehr für die schnellen Antworten.
    Es erstellt sich zwar jetzt etwas und ich habe jetzt auch einiges mehr verstanden, weshalb ich mein System
    komplett überarbeiten bzw. neuschreiben werde.


    Vielen Dank.

  • Und bitte gewöhne dir an, wenn du mit MySQL arbeitest: Escape deine Strings, um deine Seite vor SQL-Injections zu schützen, oder arbeite gleich mit prepared-Statements (welches es für dich übernimmt). Denn das Beispiel von idkme ist ein schönes Ziel für eine solche Injektion.


    /edit:
    Ich hoffe, ich habe nun keine Fehler in meinem Code (arbeite nicht mit mysqli sondern mit pdo).
    Wenn da welches sein sollten, weist mich darauf hin, und ich editiere es.

  • Ich hoffe, ich habe nun keine Fehler in meinem Code (arbeite nicht mit mysqli sondern mit pdo).
    Wenn da welches sein sollten, weist mich darauf hin, und ich editiere es.


    Was macht PDO besser oder was macht mysqli schlechter? PDO sieht
    ein wenig komplexer aus oder bilde ich es mir nur so ein?

  • Bildest du dir eigentlich nur ein. PDO ist nur komplett Objekt-bezogen ( Hiess es so?).
    MySQLi ist auch veraltet und hat diverse Sicherheitslücken.


    LG

    MySQLi ist immer noch besser als MySQL. Wenn du MySQLi verwendet ist es ok. PDO wäre natürlich noch besser, aber da gibt es gewisse Unterschiede...

  • Ich bin hier auf so ein kleines Problem gestoßen, was ich nicht lösen kann.
    Wenn ich mir Videos anschauen, können die Leute HTML-Funktionen wie zum Beispiel
    <form...> problemlos in <?php-Codeblöcken problemlos benutzen. Bei mir wird aber
    ein Fehler ausgegeben und sieht demnach statt blau, wie es sich in HTML gehört,
    grau und vom Programm gar nicht erkannt aus:


    Fehler:

    PHP
    Parse error: syntax error, unexpected '<', expecting end of file in C:\xampp\htdocs\PHPTutorial\index.php on line 3


    Bild:

  • Es gibt 2 Arten wie du das machen kannst:
    Entweder so:

    PHP
    <?php
    
    
    	echo '<form method="POST" action="index.php">';
    	echo '</form>';
    
    
    ?>


    Oder so:

    PHP
    <?php
    
    
    ?>
    	<form method="POST" action="index.php">
    	</form>
    <?php
    
    
    ?>

    Oder duch bestimmte Framework ect. wo dies ermöglichen.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • So, habe erneut das gleiche Problem, obwohl ich den Tipps von @Tusk nachgegangen bin und
    auch escaped habe und meine SQL-Query etwas verändert habe. Das Problem ist immernoch
    das gleiche! Es erstellt sich nichts neues in der Datenbank, aber die Funktionen, die ich
    gecodet haben funktionieren eigentlich einwandfrei außer, dass sich das, was ich im Formular
    eingebe in der Datenbank nicht erstellen mag.


    Hier die Bilder dazu:





    Und so sieht meine Datenbank aus. Jede neue Nachricht erhält per A_I eine neue ID:


  • PHP
    $sqli = "INSERT INTO savesmth (message) VALUES ('$post_1')";

    Ansonsten kann du dich bei mir auch via PN oder Skype melden, falls du weitere Hilfe brauchst.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Du hast einen MySQL-Syntax-Fehler:



    Du setzt ein Semikolon in der Klammer, welches eigentlich nach der Klammer kommen sollte.


    Du solltest am besten MySQL Fehler überprüfen, wenn etwas nicht klappt, trotz fehlerfreiem PHP Code:


    mysqli_query($connection, $query) or die ("MySQL-Error ".mysqli_errno($connection).': '.mysqli_error($connection));


    Auch ist es manchmal ganz praktisch, sich die Query als reinen Text ausgeben zu lassen. Dann sieht man manchmal von selbst den Fehler. ;)