Daten mit PHP in MySQL Datenbank schreiben

  • Hallo zusammen,


    ich schreibe gerade an einer App, die Daten aus einer MySQL Datenbank liest und auch reinschreibt.
    Das Auslesen funktioniert schon wunderbar, nur das Reinschreiben will nicht funktionieren...
    Hier mal der Java-Code:


    Java
    public void SaveGameClick (View view)



    Und hier die addgame.php:


    PHP
    <?php
    mysql_connect("xxx.de","xxx","xxx");
    mysql_select_db("xxx");
    $sql=mysql_query("insert into GAME (HOMETEAM, GUESTTEAM, PLACE, REFEREE, DATE, TIME)values('".$_REQUEST['hometeam'].", ".$_REQUEST['guestteam'].", ".$_REQUEST['place'].", ".$_REQUEST['referee'].", ".$_REQUEST['date'].", ".$_REQUEST['time']."')");
    $r=mysql_query($sql);
    if(!$r)
    echo "Error in query: ".mysql_error();
    mysql_close();
    ?>


    Er gibt keinen Fehler aus. Die ConnectDaten und den Link in der Java Datei habe ich auch richtig eingegeben.
    Sieht jemand einen Fehler?
    Gruß


    M3doXX

  • Hast du Dir mal in deinem PHP-Skript per print_r die Inhalte deiner $_POST , $_REQUESTs ausgeben lassen ???
    Also einfach mal debuggen was ankommt und was nicht.


    In deinem PHP Skript würde ich trotzdem noch versuchen die Werte ordentlich zu validieren, so ist das Skript anfällig für SQL Injektions.


    Achso und als offensichtlicher Fehler - in MySQL werden die SQl Werte per Ticks ' escaped ( shift + # ) und nicht per doublequote.
    Und die Spaltenbezeichner am besten auch in Backticks ´.

  • Hi,


    Laufen deine Server unter Linux? Stell mal dein MySQL in der my.cnf um dass er alles mitloggt und hau ein tail -f auf /var/log/apache2/error.log und eins auf /var/log/mysql/mysql.log. Da stehen eigentlich alle Infos drin wenn du dich in PHP irgendwo verhaun hast oder deine SQL nicht stimmt. Weißt du überhaupt ob das zeug ankommt bei dir? Mach doch einfach mal ein normales HTML Formular und stoß das ganze von da aus an.


    Gruß,
    matze

  • Moin - ist denn sein mysql_query nicht einfach nur falsch?
    Ich glaube die ' (rot gekennzeichnet) sollten dort nicht hin...



    $sql=mysql_query("insert into GAME (HOMETEAM, GUESTTEAM, PLACE, REFEREE, DATE, TIME)values('".$_REQUEST['hometeam'].", ".$_REQUEST['guestteam'].", ".$_REQUEST['place'].", ".$_REQUEST['referee'].", ".$_REQUEST['date'].", ".$_REQUEST['time']."')");

  • Also ich habe die Ticks entfernt, aber das ändert nichts.
    Und wie/wo genau ich die $_REQUESTs ausgeben lassen soll ist mir nicht ganz klar.
    Wenn ich die in der addgame.php ausgebe und diese öffne, dann kann doch eigentlich auch nichts ausgegeben werden, weil die ja nur einen Inhalt haben wenn ich in meiner App auf "Senden" klicke oder?
    Oder verstehe ich das falsch?
    Ist denn meine Java-Quelltext soweit in Ordnung oder mache ich das mit dem nameValuePairs.add auch falsch?
    Gruß


    M3doXX

  • Wenn ich die in der addgame.php ausgebe und diese öffne, dann kann doch eigentlich auch nichts ausgegeben werden, weil die ja nur einen Inhalt haben wenn ich in meiner App auf "Senden" klicke oder?

    Das ist richtig!


    Du könntest sie aber via PHP in eine Datei schreiben ;) (zwar nich die beste Mehtode aber dann siehst du dein Resultat)

    PHP
    <?php$Handle = fopen("Ausgabe.txt", 'w');fwrite($Handle,  $_REQUEST['referee'] ); fclose($Handle); ?>
  • So jetzt bin ich schonmal einen Schritt weiter, dank CPro! Besten Dank!
    Also die Variablen werden richtig übergeben.
    Habe das mit dem $Handle ausprobiert und das funktioniert einwandfrei. Die Variablen werden in die Datei geschrieben.
    Also müsste mein Fehler ja in der SQL-Query liegen. Ich weiß aber nicht genau wo...
    Hier nochmal der Code:



    Die Zugangsdaten habe ich gerade auch nochmal gecheckt. Die sind auch richtig...
    Besten Dank schonmal bis hierhin!!!
    Gruß


    M3doXX


    Edit: Habs hingekriegt!


    Für diejenigen, die es interessiert, es sieht jetzt so aus:


    PHP
    $sql=mysql_query("INSERT INTO GAME (HOMETEAM, GUESTTEAM, PLACE, REFEREE, DATE, TIME)values('".$_REQUEST['hometeam']."', '".$_REQUEST['guestteam']."', '".$_REQUEST['place']."', '".$_REQUEST['referee']."', '".$_REQUEST['date']."', '".$_REQUEST['time']."')");


    Vielen Dank für eure Hilfe!!!

  • Hier eine kleine Hilfsfunktion welche ich immer zum escapen nehme.


    Code
    function quote_smart($value) {
       if (get_magic_quotes_gpc()) {
       	$value = stripslashes($value);
       }
       if (!is_numeric($value) || $value[0] == '0') {
       	$value = "'" . mysql_real_escape_string($value) . "'";
       }
       return $value;
    }


    Zitat

    $sql=mysql_query("insert into GAME (HOMETEAM, GUESTTEAM, PLACE, REFEREE, DATE, TIME)values(".$_REQUEST['hometeam'].", ".$_REQUEST['guestteam'].", ".$_REQUEST['place'].", ".$_REQUEST['referee'].", ".$_REQUEST['date'].", ".$_REQUEST['time'].")");

    Warum nicht ?


    Code
    $hometeam = quote_smart($_REQUEST['hometeam']);
    $guestteam = quote_smart($_REQUEST['guestteam']);
     usw....
    
    
    $sql=mysql_query("insert into GAME (`HOMETEAM`, `GUESTTEAM`, `PLACE`, `REFEREE`, `DATE`, `TIME`) values ($hometeam, $guestteam, $place, $referee, ect....);")";
  • Hi,


    Du solltest für die Zukunft aber trotzdem deine Server mal umstellen und die logs mitlaufen lassen. Da hätte man deinen Fehler auf den ersten Blick gesehen.


    Nur mal so, folgendes ist doch eigenltich viel schöner, sicherer, besser:

    Code
    $stmt = $this->db->prepare("SELECT a FROM b where c=?;");				
    $stmt->bind_param("s", $value_for_c);
    $stmt->execute();
    $stmt->close();



    Gruß,
    Matthias

  • Eine Frage zu dem Thema hätte ich noch...


    Ich lese meine Daten aus der MySQL DB mit dieser Methode aus:



    Ich müsste jetzt die einzelnen Einträge in eine ArrayList o.ä. schreiben, damit ich sie anschließend in einer ListView ausgeben kann.
    Kann mir jemand sagen wie genau ich das anstelle?

  • Hi M3doXX,


    du definierst an geeigneter stelle eine ArrayList mit den Elementen

    Java
    ArrayList<EntryGoal> goalList = new ArrayList<EntryGoal>();


    und passt deine for-schleife dann an


    Gruß,
    matze

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!