PHP Script ändert MySQL Datenbank nicht!

  • Hallo zusammen!
    Ich hoffe es kann mir hier jemand weiterhelfen.


    Ich habe auf meinem RPi einen Webserver mit Apache2, php5 und MySQL am laufen. Wenn ich über die Konsole einen Eintrag in die Datenbank (name: feedback_database tabelle: playlist) durchführe funktioniert dies ohne weiteres.


    Jetzt habe ich mir eine php seite zusammengebastelt, die eben dies übernehmen soll.
    Die Seite ist so aufgebaut:


    Der Bereich mit dem Formular:



    Der Bereich, der das Formular in die Datenbank schreiben soll:


    Wenn ich das ausgefüllte Formular nur mit "echo" auf der Website anzeigen lassen möchte funktioniert das so weit. Problematisch wird es nur, wenn ich das ausgefüllte Formular (bspw. Interpret: Beispiel_Interpret Titel: Beispiel_Titel) mit dem o.g. php-code in der Datenbank speichern will.
    Es wird keine Fehlermeldung angezeigt und die Verbindung zum MySQL Server besteht auch. Kann es sein, dass mit den Rechten (user, php, mysql) irgendetwas nicht in Ordnung ist und wenn ja was?


    Vielen Vielen Dank für Hilfe jeglicher Art!!! :danke_ATDE:


  • Hallo xx_jac_xx,


    deine Input Tags haben keine Value - du übergibst also nichts...


    Hallo zurück,
    ich glaube ich habe mich ein bisschen unglücklich ausgedrückt. Bis jetzt funktioniet das auch ohne ein Value.
    Ich habe in dem zweiten php Script den teil mit

    Code
    "INSERT INTO playlist(interpret, titel)
    VALUES('$interpret', '$titel');


    weg gelassen und stattdessen

    Code
    echo $interpret;
    echo $titel;


    dort hinein geschrieben. Auf der Website die sich nach dem Drücken auf den Submit Button öffnete wurden dann die beiden Variablen angezeigt. Das übergeben von der Formularseite auf die zweite seite funktioniert soweit also...

  • Wenn du richtige Formulare mit Values benutzt, dann hast du auch was im $_POST Array stehen. Sonst eben nicht...


    [Edit]
    Mißverständnis - offenbar willst du nur über dein Formular die Interpreten und Titel in deine Datenbank schreiben... da kommt vorher nichts aus der Datenbank in die Form.

    Edited once, last by doing ().

  • Servus,
    wo soll er denn den INSERT machen? :s
    Wo verwendest Du denn den DB-Handle $verbindung um dem INSERT mitzuteilen, auf welche DB-session er sich bezieht?


    Guck vielleicht -> mal hier rein <- ...


    //EDIT: Link gefixt ...


    cu,
    -ds-

  • Bist Du sicher?
    Ich kenn das nur so:

    Code
    $sql="INSERT INTO BLA ..."
    $verbindung->query($sql)


    //EDIT: mysql_query() versucht eine neue DB-Session zu erzeugen, wenn man den Handle weglässt (-> mysql_query() im PHP manual <-).
    Hatten wir hier erst: http://www.forum-raspberrypi.d…rver?pid=266313#pid266313
    Leider ist der "Vogel" ohne Feedback ausgeflogen ...


    cu,
    -ds-

  • @ doing:
    Die values im Formular sind nicht zwingend notwendig! Es kommen trotzdem die Daten via POST an.. Im Textfeld hat das Value nur zur Folge das der dort definierte Wert bereits im Textfeld angezeigt wird...


    Definierst Du ein Textfeld so:

    Code
    <input type="text" name="interpret" value="Michael Jackson">


    Und schickst es via submit ab. Wird als Wert in:

    PHP
    <?php
    $interpret=$_POST['interpret'];
    ?>


    Michael Jackson zu finden sein.. Da er jedoch dort eine Eingabe machen will, kann er das Value an dieser Stelle durchaus weglassen.. Funzt trotzdem..


    Erleichtert sogar die Überprüfung ob das Feld ausgefüllt wurde oder nicht..
    Wird ein vorher definierter wert übertragen, geht das zwar auch noch, ist aber umständlicher...


    Lg..

  • Tiieto
    Hatte ich in Post #4 bereits klargestellt ;)
    Die Überprüfung der $_POST Variablen wäre natürlich nicht nur wünschenswert sondern wichtig!


    dreamshader
    Ja, das sollte so


    Code
    $interpret = $_POST["interpret"];
    $titel = $_POST["titel"];
    mysql_connect("localhost", "benutzer", "streng_geheim") or die ("Fehler im System");
    mysql_select_db("meine_datenbank") or die ("Verbindung zur Datenbank fehlgeschlagen.");
    mysql_query("INSERT INTO playlist (interpret, titel) VALUES ('".$interpret."', '".$titel."') ");
    mysql_close();


    gehen wie natürlich auch



    [Edit]
    Bei einzelnen Requests sehe ich die neue DB Session nicht als Problem an, solange sie auch wieder geschlossen wird. Davon abgesehen ist mysql() deprecated und man sollte besser gleich zu mysqli() greifen.

    Edited once, last by doing ().

  • Naja ... im anderen Thread (siehe EDIT in meinem vorigen Post) wurde versucht die neue Session als Nutzer www-data und ohne Passwort zu erzeugen (was ja -> auch die Vorgabe ist für die neue Session ist <-). Und das ging dann in die Hose ... das sollte man imho schon im Hinterkopf behalten.


    cu,
    -ds-

  • @ doing:
    Da warst Du mit deinem Post schneller als ich...
    Mit dem Smartphone dauert es etwas länger den Code zu tippern, zumal die Autokorrektur immer wieder Fehler in den Code haut...


    Was meiner Meinung nach noch wichtig wäre ist die Eingaben im in die Datenbank schreibenden string gegen injections abzusichern...



    LG

    Edited once, last by Tiieto ().