Ankündigung

Einklappen
Keine Ankündigung bisher.

Update-Frage bei MySQL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Update-Frage bei MySQL

    Hallo allerseits...

    ich hätte da mal eine Verständnisfrage...

    Ich habe eine Tabelle in einer DB, in der auch die Links von Bildern gespeichert werden, die per Upload-Formular hochgeladen werden. Das klappt alles wunderbar.

    Jetzt habe ich der einfacher halber es s geregelt, dass man die Bilder seperat ändern kann. Das heisst, die alten Bilder werden auf dem Webspace gelöscht, die neuen hochgeladen und mit Namen versehen. Diese Namen werden dann auch in die DB geschrieben.

    Nur bekomme ich per PHP immer die Meldung zurück dass ein Fehler aufgetreten ist (also $num ist immer 0), aber die Files werden Ordnungsgemäß aktualisiert. IM Grunde klappt alles.

    Jetzt dachte ich mir dass es vielleicht daran liegt dass nicht alle Files neu in die DB geschrieben werden, auch wenn sie die gleichen Werte haben...dann könnte ich das ganze übergehen wenn ich die Werte auslese und per hidden-Feld wieder in die DB schreibe. Nur das wäre einiges an Arbeit...daher frage ich mal lieber bevor ich mir endgültig alles zerschieße..

    Danke

    Lapje

  • #2
    Zitat von Lapje Beitrag anzeigen
    Hallo allerseits...

    ich hätte da mal eine Verständnisfrage...

    Ich habe eine Tabelle in einer DB, in der auch die Links von Bildern gespeichert werden, die per Upload-Formular hochgeladen werden. Das klappt alles wunderbar.

    Jetzt habe ich der einfacher halber es s geregelt, dass man die Bilder seperat ändern kann. Das heisst, die alten Bilder werden auf dem Webspace gelöscht, die neuen hochgeladen und mit Namen versehen. Diese Namen werden dann auch in die DB geschrieben.

    Nur bekomme ich per PHP immer die Meldung zurück dass ein Fehler aufgetreten ist (also $num ist immer 0), aber die Files werden Ordnungsgemäß aktualisiert. IM Grunde klappt alles.

    Jetzt dachte ich mir dass es vielleicht daran liegt dass nicht alle Files neu in die DB geschrieben werden, auch wenn sie die gleichen Werte haben...dann könnte ich das ganze übergehen wenn ich die Werte auslese und per hidden-Feld wieder in die DB schreibe. Nur das wäre einiges an Arbeit...daher frage ich mal lieber bevor ich mir endgültig alles zerschieße..

    Danke

    Lapje
    hmm was ist $num?

    Kommentar


    • #3
      und mindestens genausowichtig: was ist die Frage?

      Kommentar


      • #4
        PHP-Code:
        $mysql_aendern .= "UPDATE xy SET ..."';
                                        
        mysql_query($mysql_aendern);
        $num = mysql_affected_rows();
                                        
        // Kontrolle ob Datensätze geändert wurden
        if($num>0)
        {
             echo "Der Datensatz wurde geändert<br><br>";
        }
                                            
        else
        {
             echo "Es ist ein Fehler aufgetreten. Der Datensatz wurde nicht geändert<br><br>";

        Das ist $num..

        Und die Frage war ob die Fehlermeldung daher kommen kann dass ich nicht alle Felder in der Tabelle aktualisiere...sondern nur die mit den Bilder-Links...

        Den es wird ja nur eine 0 zurückgegeben wenn bei der Änderung Fehler aufgetreten sind. Aber es treten ja eigentlich keine auf. Es wird alles richtig in die DB geschrieben, also müsste doch eigentlich eine 1 als Wert zurückgegeben werden.

        Kommentar


        • #5
          Man lese mal kurz das Manual:
          Hinweis: Benutzen Sie UPDATE wird MySQL keine Spalten aktualisieren, bei denen der neue dem alten Wert entpspricht. Das kann dazu führen, dass mysql_affected_rows() nicht die tatsächliche Anzahl der betroffenen Zeilen liefert, sondern nur die, die wörtlich durch die Anfrage betroffen sind.
          Das sollte helfen oder? Ein bisschen selbst recherchieren und du hättest das selbst gefunden.

          Kommentar


          • #6
            das weiss ich selber, die Frage war eher so gemeint, was ist, wenn nur 3 anstannt 10 Werte geliefert werden.

            Deine Aussage bezieht sich ja eher darauf, wenn ich 10 Felder habe und 10 Werte liefere von denen nur einer geändert wurde, dann wird auch nur der eine geschrieben. Aber wenn ich nur 3 Werte liefere, dann können die anderen nicht verglichen werden...und daher die Frage ob genau diese Sache zu Problemen führen könnte...

            Kommentar


            • #7
              Nein wieso? Wenn bei einem Datensatz nur eine einzige Spalte geändert wird, wird "$num" erhöht, egal ob die anderen Spalten gleich bleiben. Sollten aber ALLE Spalten den selben Inhalt haben wie zuvor, dann wird $num nicht erhöht.

              Kommentar


              • #8
                und es werden 3 Spalten geändert, trotzdem bleibt $num 0...das verstehe ich halt nicht, die Daten werden aber korrekt in die DB geschrieben...

                Kommentar


                • #9
                  Und diese 3 Spalten haben definitiv NICHT den Inhalt wie der Datensatz davor?

                  Kommentar


                  • #10
                    Ich finde das .= recht verdächtig.
                    PHP-Code:
                    $mysql_aendern .= "UPDATE xy SET ..."

                    Kommentar


                    • #11
                      mein Fehler, ist durch das kürzen gekommen...ist im original nich drinn..

                      Kommentar


                      • #12
                        Ist deine Frage jetzt beantwortet oder gibt es sonst noch Probleme?

                        Kommentar


                        • #13
                          also wenn die DB ausgeschlossen ist muss ds Problem irgendwo anders liegen. Wie gesagt, dann kann ich die Db schon mal ausschließen...und muss weitersuchen..

                          Kommentar


                          • #14
                            Es gibt mysql_error (), es gibt dier Möglichkeit die Query auszugeben, die DB Ressource auszugeben...

                            Kommentar


                            • #15
                              hab ich ja gemacht...nichts...keinen Fehler, und trotzdem wird bei mysql_affected_rows(); 0 als Wert zurückgegeben.

                              Kommentar

                              Lädt...
                              X