dedlfix: affected_rows ist immer -1

Beitrag lesen

Hi!

Ich will mit $stmt->affected_rows; prüfen ob ein Eintrag bereits vorhanden ist. Ich bekomme aber immer '-1' egal ob etwas vorhanden ist oder nicht.

Wer oder was ist $stmt? Nach welchen Operationen, sagt die Dokumentation deiner verwendeten Klasse, hat welcheklasseauchimmer::affected_rows einen sinnvollen Wert? Und welches SQL-Statement verwendest du?

Liegt das an etwas Bestimmten oder soll ich mal das Script posten?

Üblicherweise - keine Ahnung, ob das was du machst üblich ist, denn du zeigst es ja nicht - fragt man Daten mit SELECT ab, affected Rows gibt es jedoch nur mit einer Daten ändernden Funktion.

Zusatzfrage: warum fragst du nach der Existenz? Willst du anschließend einen Datensatz hinzufügen, wenn das Existenzkriterium noch nicht existiert und ansonsten nicht? Dazu eignet sich besser ein Unique Index über dem Existenzkriterium (kann auch mehrere Spalten umfassen) und ein unbedingtes INSERT. Wenn es daraufhin einen Unique-constraint-Fehler gibt, war der Datensatz schon da, ansonsten wurde er eingefügt. Bei dieser Vorgehensweise kann es auch nicht passieren, dass sich zwischen Abfrage und Eintrag ein anderer Prozess dazwischen schmuggelt.

Lo!