Veröffentlicht 30. März 201015 j Hallo an Alle, ich bräuchte mal etwas Unterstützung bei einem kleinen Problem was mich grad ziemlich Nerven kostet. Es geht um folgenden MySQL-Query den ich mit PHP durchführen möchte: $sql = 'UPDATE targets SET Bezeichnung = "'.$t_bez.'", Gruppen = "'.serialize($t_gruppen).'", Speicherort = "'.$t_speicherort.'", wann = "'.$wann.'", Datum = "'.date("Y-m-d").'" WHERE TID = "'.$_POST['TID'].'"'; $return = $db->query($sql); [/PHP] Die Anweisung wird ausgeführt, ABER das Komische ist das er den betreffenden Datensatz nicht ändert und auch keinen Fehler oder so ausgibt. Bin echt langsam am verzweifeln, warum das so ist. Die Variablen haben alle die richtigen Werte (von einem Formular übergeben), die Verbindung zur Datenbank besteht und funktioniert ansonsten auch. Tabellenname ist auch korrekt. Wo ist jetzt der Fehler :confused:, ich glaub ich bin schon irgendwie betriebsblind. mfG xG3n1uS
30. März 201015 j Tippe auf nichterfüllte WHERE-Bedingung. Viel schlimmer an deinem Code: Es ist ein Paradebeispiel wie man es NICHT MACHT. Warum? Darum: SQL-Injection ? Wikipedia Grüße Ripper
30. März 201015 j Ersteinmal ist es sehr gefährlich direkt die Post-Variable an eine Query zu übergeben (SQL-Injection). Zum Problem: Wenn kein Fehler auftritt ist das Statement syntaktisch korrekt, so dass der Fehler bei Dir in der Semantik sein muss, die aber hier niemand beurteilen kann, da keiner hier Deine Datenbank und Deine Anwendung vorliegen hat. Ich würde darauf tippen, dass die Condition nicht korrekt ist und somit eben auf keinen Datensatz zugreift Bearbeitet 30. März 201015 j von flashpixx na toll: Ripper war schneller........
30. März 201015 j Danke für den Hinweis mit den SQL-Injections, dazu möchte ich nur sagen das alle Variablen bis auf die $_POST['TID'] vorher noch überprüft werden usw. Kommt dann auch noch damit rein, aber um Funktion des Querys zu testen ist das ja nicht unbedingt nötig Zum Thema Tabellenaufbau: Name der Tabelle: targets Felder: TID (int, primary key) Bezeichnung (varchar) Gruppen (varchar) Speicherort (varchar) wann (date) Datum (date)
30. März 201015 j Zum Thema Tabellenaufbau: Inwieweit hilft diese Information weiter? Mit einer leeren Tabellen und Variablennamen kann man nicht viel anfangen. Bearbeitet 30. März 201015 j von flashpixx
30. März 201015 j Sorry hab zulange gebraucht für die Eingabe beim Editieren -.-, als ichs dann gemerkt hatte das ein Beispiel sinnvoll wäre. Also ein Beispiel: Ein schon bestehender Datensatz in der Tabelle: TID = 13 Bezeichnung = nr132 Gruppen = a:1:{i:0;s:1:"2";} Speicherort = L:\\!gruppe\\Schichtplan.XLS wann = 2010-03-27 Datum = 2010-03-30 Die Aktualisierung: $t_bez = nr132_1 $t_gruppen = 2, 3 (ist die gruppennumer als array, deswegen oben als serialize) $t_speicherort = L:\\!gruppe\\Schichtplan.XLS $wann = 2010-03-27 $_POST['TID'] = 13 kommt als string für $sql heraus: UPDATE targets SET Bezeichnung = "nr132_1", Gruppen = "a:2:{i:0;s:1:"2";i:1;s:1:"3";}", Speicherort = "L:\\!gruppe\\LHB\\6_Referat_DV\\automatik schichtplan.XLS", wann = "2010-03-27", Datum = "2010-03-30" WHERE TID = "13"
30. März 201015 j Nimm mal Dein Statement und führe es per Hand z.B. via phpmyadmin auf der Datenbank auf und überlege Dir welche Datentypen in Quotes gesetzt werden und welche nicht
30. März 201015 j ah da kommt schon mal ein Fehler. jetzt hab ichs :upps Danke für den Schubs in die richtige Richtung. mfG xG3n1uS
30. März 201015 j Danke für den Schubs in die richtige Richtung. bitte bitte und ich find's gut, dass Du die Lösung selbst gefunden hast
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.