Hi!
habe das Problem, dass POST-Variablen an die DB nicht mehr übergeben werden. Ich schätze, dass es durch ein Update der mysql oder PHP-Version kam.
Schätzen allein reicht nicht, um die Ursache zu finden. Kontrolliere deine Annahme mit Kontrollausgaben. Sind die gewünschten Werte in den vorgesehenen Variablen enthalten? var_dump() erzeugt die genauesten Ausgaben (inklusive Typ und Stringlängenangabe).
$sql = [...] $result = mysql\_query($sql,$db) or die ([...]); echo $sql;
Gut, hier machst du eine Kontrollausgabe des fertigen Statements und sagst, es sei richtig. Die Query wird vermutlich auch richtig ausgeführt, sonst hättest du von einem Ausführungsfehler berichtet, die dir von der rudimentären Fehlerbehandlung mit die() angezeigt worden wäre.
Lasse ich mir das Statement über die Oberfläche ausgeben, dann wird mir das Statement richtig mit allen Werten angezeigt und ich kann es über die DB direkt (phpmyadmin) eingeben und es funktioniert (wird also gespeichert). Über die Oberfläche wird nichts gespeichert, da wohl überall Leerzeichen als Werte gesetzt werden.
Das ist widersprüchlich. Mit Oberfläche meinst du wohl beim ersten Mal die Ausgabe deines Script an den Browser und beim zweiten Mal dein Script selbst. Wenn die Kontrollausgabe richtig war, und trotzdem Leerzeichen (Leerzeichen oder Leerstrings?) im DBMS landen, sind irgendwo noch Verarbeitungsschritte dazwischen, oder es passiert etwas komplett anderes, mit dem du nicht gerechnet hast.
Gebe ich nämlich einen festen Wert ein, wird dieser gespeichert. Irgendwas stimmt also wohl mit der Übergabe der Wert an die DB nicht.
Dem DBMS ist es komplett egal, ob die Query zusammengebaut oder als fester String notiert wurde. Es zählt das, was sie zu Gesicht bekommt. Nimmst du für den "Fest"-Versuch die gleichen Werte wie sie über das Formular eingegeben werden?
Hat jemand eine Ahnung was ich da falsch mache bzw. was durch ein Update der PHP bzw. Mysql Version veraltet ist?
Um für die hintere Teilfrage konkrete Vermutungen anstellen zu können, wären die bisherigen und derzeitigen Versionen interessant.
Wenn die Query angeblich richtig zusammengabaut wird und sie beim händischen Kopieren gegen das selbe DBMS klaglos ausgeführt wird, kann es kaum an Fehlern bezüglich Versionsimkompatibilität liegen.
Du bist sicher, dass du keine Fehlermeldungen übersehen oder unterdrückt hast? error_reporting steht (zumindest für den Test) auf E_ALL und display_errors auf on? Die Ergebnisse aller MySQL-Funktionen (inklusive Logon) werden auf Fehlerwerte untersucht? (Zur Not mit einem die(), obwohl ich das in den meisten Fällen als dem Anwender gegenüber unangemessene Fehlerbehandlung ansehe.)
Das was du im DBMS kontrollierst ist auch das, was das Script in diesem Durchlauf reinschreibt? Oder wird das Script - aus welchem Grunde auch immer - vielleicht ein zweites Mal ohn Werte aufgerufen und du betrachtest nur diese letzte Einfügung und nicht auch die vorhergehenden?
Lo!