Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage was er gemacht hat INSERT ... ON DUPLICATE KEY

Einklappen

Neue Werbung 2019

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

  • Abfrage was er gemacht hat INSERT ... ON DUPLICATE KEY

    Hallo,

    ich denke die Überschrift sagt schon alles was ich machen will. Ich schicke einen Query ab mysql_query("INSERT ... ON DUPLICATE KEY UPDATE ...")

    Jetzt möchte ich anschließend feststellen was er gemacht hat den insert oder das update wie kann ich das machen?

    Danke schon mal für die Antworten.

    Oetzi


  • #2
    Hmm wie wärs wenn man dafür mysql_insert_id() benutzt? Müsste doch gehen oder?

    Kommentar


    • #3
      Daran hab ich auch schon gedacht aber leider liefert mysql_insert_id() in beiden fällen ein gültiges Ergebnis wobei einmal die id der vorhandenen Zeile zurückgegeben wird. Aber das hilft mir ja nicht weiter weil ich eben nicht erkennen kann ob die id ne alte oder neue ist.

      Kommentar


      • #4
        Führ doch einfach ein DATETIME-Feld mit was bei einem Update aktualisiert wird und lese das aus... nen einfacherer Weg ohne zweite Abfrage fällt mir jetzt nicht ein...

        Kommentar


        • #5
          Würde gern auf eine zweite Abfrage verzichten da ich im moment versuche die Datenbank abfragen in meinem System zu minimieren also vllt fällt jemand noch eine andere Lösung ein.

          Kommentar


          • #6
            mysql_affected_rows() gibt Dir beim insert eine 1 beim update eine 2 zurück sofern nur ein Datensatz betroffen ist...

            Kommentar


            • #7
              Echt? Hmm aber warum gibt der eine 2 zurück?

              Kommentar


              • #8
                aus dem Manual:

                Wenn Sie mit INSERT ... ON DUPLICATE KEY UPDATE eine Zeile einfügen, liefert mysql_affected_rows() den Wert 1, wenn die Zeile als neue Zeile eingefügt wurde, und 2, wenn eine vorhandene Zeile geändert wurde

                Kommentar


                • #9
                  Ach das ist absicht na denn

                  Kommentar


                  • #10
                    hehe was dachtest Du denn?

                    Kommentar


                    • #11
                      Och bei PHP kommen die lustigsten Sachen unabsichtlich

                      Kommentar


                      • #12
                        unabsichtliche Ergebnisse kommen meist nur, weil die meisten hier keinen Plan haben was sie tun, bzw. wie die verwendeten Funktionen agieren.

                        Es ist eher selten, dass MySQL oder PHP nicht arbeiten wie designed. Mein tip: RTFM

                        Kommentar


                        • #13
                          Wahrscheinlich wird die Zeile in diesem Fall zuerst gelöscht, und dann wieder eingefügt, und beides gezählt.
                          Das gibt dann besonders lustige Resultate, wenn du solche INSERTS mit mehreren Zeilen hast, die teileweise so und so gehandhabt werden.
                          Gruss
                          L

                          Kommentar


                          • #14
                            Warum lustige Resultate?
                            Bei INSERT wird 1 gezählt, bei UPDATE wird 2 gezählt

                            Heisst mysql_affected_rows() - Anzahl versuchter Inserts = Anzahl Updates, die durchgeführt wurden.

                            Kommentar


                            • #15
                              Danke für die Hilfe, das funktioniert. Problematisch ist wirklich nur, wenn du ein
                              INSERT INTO ... () VALUES (...) (...)(...) ON DUPLICATE KEY UPDATE ... machst dann ist die Zahl nicht wirklich aussagekräftig aber ich füg im insert ja nur einmal Values bei mir hinzu von daher geht das so.

                              Kommentar

                              Lädt...
                              X