Vermutliches Problem bei "Insert into"

  • Hallo erstmal, bin mir jetzt nicht sicher ob ich hier richtig bin oder nicht :/

    ich denke aber mal eher hier als bei mysql

    Zu meinem Problem:
    Ich habe ein PHP script was ich einigermaßen anpassen musste,

    Dabei geht es um ein User control panel für ein Spiel...
    Darin sind verschiedene Fraktion aufgeführt wo es möglich ist sich bei genannten zu bewerben...wenn ich jetzt auf den Punkt bewerben gehe und die erforderlichen Daten eingebe und diese Bewerbung Absende kommt nichts in der Datenbank an...

    Den genauen Fehler weiß ich jedoch nicht :/
    Ich vermute dass im script der Bereich mit dem "insert into" nicht genügend gefüllt ist :/

    Oder aber auch das mir spalten in der Datenbank fehlen ich habe dort momentan 6 spalten...ich bin mir nur nicht ganz sicher ob es alle nötigen sind

    Hier mal der Code:

    Ich hoffe ihr könnt mit verraten welche spalten ich in der Tabelle "application" brauche und warum keine Bewerbung versendet wird ;/
    Mfg Chris

  • Wenn ich solche Zeilen sehe

    PHP
    $fraktion_leader = @mysql_result(@mysql_query("SELECT name FROM accounts where Leader='".$fraktion."'"), 0 );


    dann wird mir aber leicht übel. Verschachtelte Aufrufe mit @ davor, einfach nur grausam, wie eigentlich der komplette Quellcode.

    Außerdem solltest du auf MySQLi umstellen, denn die MySQL-Schnittstelle ist veraltet.

    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • Hallo Bandit vielen dank für deine Antwort,
    Da ich ein Anfänger in Sachen PHP und mysql bin gab mir Dein Beitrag auch direkt neue Fragen unzwar,

    Da ich dieses (von dir liebe voll genannt Häufchen elend) nicht fabriziert habe frage ich mich was an diesem kleinem @ so schlimm ist?


    Was ist denn das besondere an mysqli das du mir sagst ich sollte darauf umsteigen?

    Wo Wird in_set('display_errors', True) verwendet?

    Mysqli error() verwenden? Sollte ich das in diesem Script verwenden oder erst wenn ich umgestellt habe?

  • Ein @ vor einem Funktionsaufruf unterdrückt eventuelle Fehlermeldungen
    Die MySQL-Extension wird in den nächsten PHP-Versionen nicht mehr unterstützt, deshalb solltest du auf MySQLi umstellen
    Die Zeilen

    PHP
    error_reporting[E_ALL);
    ini_set('display_errors',true);


    gehören direkt an den Anfang, also direkt unter dem ersten <?php
    Mit der alten MySQL-Extension sollte man das so schreiben:

    PHP
    $result = mysql_query("........")
       or die ("MySQL-Error: " . mysql_error());