hawkmaster: PDO errorInfo geht bei DELETE nicht?

Hallo zusammen,

Folgender DELETE bringt eine Fehlermeldung wenn in der Tabelle "my" garnichts vorhanden ist bzw. es die ID nicht gibt.
         $deletemy = $DBO->exec("DELETE FROM my WHERE ID = '$ID' " ) or warning($DBO, __FILE__ ,__LINE__);

function warning($DBO,$fileinfo,$lineinfo) {
$dboerrormsg = ($DBO->errorInfo());
//print_r($dboerrormsg);
echo "Ein Fehler ist aufgetreten in " . $fileinfo . " bei Zeile " . $lineinfo ."<br><br>";
echo "Die genaue Fehler beschreibung lautet:   <b>" . $dboerrormsg[2] ."</b><br><br>";
}

Ich stelle das auf "try und Catch" um.
Mich würde aber trotzdem interessieren warum "$dboerrormsg[2]" nichts enhält, es also keine Error Message gibt?
Der print_r($dboerrormsg); ergibt nur Array ( [0] => 00000 )

vielen Dank und viele Grüße
hawk

  1. Hallo hawkmaster,

    Folgender DELETE bringt eine Fehlermeldung wenn in der Tabelle "my" garnichts vorhanden ist bzw. es die ID nicht gibt.

    das ist ein Fehler in Deinem Code.

    $deletemy = $DBO->exec("DELETE FROM my WHERE ID = '$ID' " ) or warning($DBO, __FILE__ ,__LINE__);

    Beseitige Deinen Fehler. Es ist _kein_ Fehler, wenn 0 Datensätze gelöscht werden. Es liegt kein Fehler vor, wenn die Methode exec() den Wert 0 zurückliefert. Es liegt ein Fehler vor, wenn diese Methode FALSE zurückliefert. Beachte den Kasten in der Doku zu PDO::exec().

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,
      danke dir für deine Hilfe.
      Mir ist bewusst das es ein Denkfehler von mir war, bzw. das ich diese Situation nicht richtig abgefangen habe.
      ich dachte nur "errorInfo" würde dann trotzdem irgend eine sprechende Fehlermeldung bringen.

      vielen Dank und viele Grüße
      hawk

      1. echo $begrüßung;

        ich dachte nur "errorInfo" würde dann trotzdem irgend eine sprechende Fehlermeldung bringen.

        Warum sollte es? PDO::errorInfo() liefert nur Fehler, die vom DBMS gemeldet wurden. Und da kein Datenbankfehler aufgetreten ist, kann da nichts geliefert werden.

        echo "$verabschiedung $name";

        1. Hi dedlfix,
          danke dir für die Hilfe.

          Warum sollte es? PDO::errorInfo() liefert nur Fehler, die vom DBMS gemeldet wurden. Und da kein Datenbankfehler aufgetreten ist, kann da nichts geliefert werden.

          Ja ist eigentlich klar. Ich habe mich nur täuschen lassen wegen dem ".. or warning(..)". Ich dachte dann automatisch an einen SQL Error. Aber es kam ja eigentlich nur wegen dem fehlerhaften "exec" zustande wenn ich es richtig sehe.

          Wenn ich es nun mit Try und Catch versuche:
          try {
          $deletemy = $DBO->exec("DELETE FROM myp WHERE ID = '$ID' " );
          echo "<br /><br />Erfolgrecih --zurück<br /><br /><a href="admin.php">$iwc_back</a>";
          } catch(PDOException $e) {

          }
          So funktioniert es jetzt.
          Ich möchte eigentlich gar keine Ausgabe oder Meldung. Denn wenn ein Datensatz vorhanden soll er gelöscht werden.Daher ist das Catch leer. Ist das ok so?

          vielen Dank und viele Grüße
          hawk