Per PHP Daten eintragen funktioniert nicht ...

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Sanweb.

    Per PHP Daten eintragen funktioniert nicht ...

    Hallo VB-P!

    Ich habe mich die letzten Tage mal intensiver mit PHP & MySQL beschäftigt und hab mich nun mal an einem VB.net Formular versucht, dass 4 Variablen per POST an mein PHP Script weitergibt, was diese 4 Variablen wiederum in meine Datenbank einträgt.

    Vor meiner Frage hier mal die ganzen Codes:

    PHP Skript:

    PHP-Quellcode

    1. <?php
    2. $verbindung = mysql_connect("host", "user", "pw")
    3. or die ("Fehler im System: ". mysql_error());
    4. mysql_select_db("datenbank")
    5. or die ("Verbidung zur Datenbank war nicht möglich...");
    6. $absender = $_POST['absender'];
    7. $empfaenger = $_POST['empfaenger'];
    8. $betreff = $_POST['betreff'];
    9. $message = $_POST['message'];
    10. mysql_query("INSERT INTO msg(ID, from, to, header, message) VALUES('', '$absender', '$empfaenger', '$betreff', '$message')");
    11. ?>


    Mein VB-Code für den POST:

    VB.NET-Quellcode

    1. Dim nv As New NameValueCollection
    2. Dim wc As New WebClient
    3. ...
    4. ' Button Klick Event
    5. If empfaenger_txt.Text = "" Or betreff_txt.Text = "" Or nachricht_txt.Text = "" Then
    6. MessageBox.Show("Ein Feld wurde nicht ausgefüllt!")
    7. Else
    8. Dim session As String = My.Settings.session
    9. nv.Clear()
    10. nv.Add("absender", session)
    11. nv.Add("empfaenger", empfaenger_txt.Text)
    12. nv.Add("betreff", betreff_txt.Text)
    13. nv.Add("message", nachricht_txt.Text)
    14. Dim result() As Byte = wc.UploadValues("http://lost-paradise.neocoding.org/test/sendmessageclient.php", "POST", nv)
    15. Dim resultstring As String = System.Text.Encoding.ASCII.GetString(result)
    16. MessageBox.Show(resultstring)
    17. Me.Close()
    18. gamemain.Show()
    19. End If


    Nun zu meinem Problem: Wenn ich den Button drücke und alles durchgeführt wird, erhalte ich nach Abschluss meinen "Resultstring", den ich mir per MessageBox anzeigen lasse. Aber der Resultstring ist leer, ebenso wie die Tabelle in der DB... Was mache ich falsch? Ich suche schon seit heute morgen verzweifelt den Fehler und mir gehen langsam die Ideen und die Motivation aus..
    Ein paar Denkanstöße wären nicht schlecht.

    Danke!

    LG IMW.eu
    Aber der Resultstring ist leer

    Du gibst ja auch nirgends etwas aus.

    ebenso wie die Tabelle in der DB

    Das Skript scheint fehlerhaft. Versuche es hiermit:

    PHP-Quellcode

    1. mysql_query("INSERT INTO `msg`(from, to, header, message) VALUES('".$absender."', '".$empfaenger."', '".$betreff."', '".$message."')");


    Und ganz nebenbei: Benutze für die Datenbankarbeit bitte MySQLi oder PDO. Die mysql_*-Funktionen werden von PHP in relativ naher Zukunft als veraltet markiert werden.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hast du es jetzt aufgegeben oder soll ich meine Glaskugel zücken? Schmeißt das Skript irgendwelche Fehler? Stelle es doch zum schnellen Testen mal auf GET um und teste, ob das Eintragen über den Aufruf im Browser klappt.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Natürlich habe ich nicht aufgegeben. Das Script selbst meldet keine Fehler, aber nachdem ich die Methode auf GET umgestellt habe, gibt VB mir folgende Errormeldung:

    Eine nicht behandelte Ausnahme des Typs "System.Net.WebException" ist in System.dll aufgetreten.

    Zusätzliche Informationen: Ausnahmefehler während einer WebClient-Anforderung.
    Werden die Daten denn nun eingetragen, wenn du das Skript mit Parametern im Browser aufrufst?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lukas“ ()

    Ich würde dir raten Tabellen- und Spaltennamen in `` zu setzten. Denn from ist auch ein SQL Statement und wenn Spalten so heißen könnte der Parser durcheinander kommen, weil du auch INSERTs machen kannst von Tabellen

    SQL-Abfrage

    1. INSERT INTO `tabelle` SELECT FROM `tabelle2`


    Deswegen alles was von dir kommt, also Tabellen und Spaltennamen in Hochkommas, damit dem Parser klar ist was damit gemeint ist, ebenso wie man Strings in '' tut.
    Und was ich vorhin ganz vergessen habe: Escape die Eingaben! In deinem Fall per

    PHP-Quellcode

    1. mysql_real_escape_string($_GET["wat"]);


    Ansonsten sind SQL Injections möglich.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hallo,

    ich habe damals mal eine kleine PHP Funktion geschrieben, mit welcher ich aus einem PHP Array bequem einen korrekten SQL Insert inkl. Update generieren konnte, ohne einen eingeschlichenen Syntax Fehler befürchten zu müssen.

    PHP-Quellcode

    1. function insert($keyValue){
    2. if(is_array($keyValue)){
    3. foreach($keyValue as $key => $value){
    4. $update[] = $key . '="'.htmlentities($value, ENT_QUOTES, 'UTF-8').'"';
    5. $fields[] = '`'.$key.'`';
    6. $values[] = '"'.htmlentities($value, ENT_QUOTES, 'UTF-8').'"';
    7. }
    8. return '('.implode(' , ',$fields).') VALUES '.'('.implode(' , ',$values).') ON DUPLICATE KEY UPDATE '.implode(' , ',$update);
    9. }
    10. }


    und so sieht die Schleife aus:

    PHP-Quellcode

    1. foreach($resp->itemRecommendations->item as $item) {
    2. $arr = json_decode( json_encode($item) , 1); ;
    3. $sql = "INSERT INTO `tabellenname` " . insert($arr) . ";";
    4. }