ChrisB: "quote()" Problem, kein Insert??

Beitrag lesen

Hi,

Mir ist ein unterschiedliches Verhalten beim DELETE aufgefallen.
Bisher:
mysql_query("DELETE FROM login WHERE usr='$USER'") or error(__LINE__,__FILE__,"Konnte Userdaten nicht loeschen",mysql_error());

Zitat Manual:
"For other type of SQL statements, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error."

Kann das Statement also fehlerfrei verarbeitet werden, bekommst du true als Rueckgabewert von mysql_query, also keine Notwendigkeit, den or-Teil auszufuehren - egal, ob und wie viele Zeilen vom DELETE geloescht wurden.

Auch wenn keine Daten des Users in der Tabelle "login" waren gab es keine Fehlermeldung beim Lösch Versuch.

Natuerlich, das Statement wurde ja trotzdem fehlerfrei verarbeitet.

Mit DBO muss ich immer das "or .." weglassen weil sonst immer die Meldung kommt.
$checkdel = $DBO->exec("DELETE FROM login WHERE usr='$USER'");

Hast du eine Idee warum das so unterschiedlich ist?

Weil, ebenfalls im Manual nachzulesen:
"PDO->exec() executes an SQL statement in a single function call, returning the number of rows affected by the statement."

Wenn dein DELETE-Statement jetzt aber keine Datensaetze erfasst hat, dann ist die number of rows affected 0 - und 0 wird durch PHP an dieser Stelle mit false gleichgesetzt, also wird der or-Teil ausgefuehrt.

MfG ChrisB