ChrisB: Welche Variante zum prüfen ob Datensatz vorhanden? (PDO)

Beitrag lesen

Hi,

Mir persönlich gefällt eigentlich Variante 1 mit "fetchColumn" ganz gut.

Kann man machen, finde ich aber irgendwie trotzdem unschoen.

Möglichkeit 2 ist vom Code her am aufwändigsten.

Und erfordert bei dieser Art der Umsetzung auch zwei Queries.

Oder besser Variante 3 mit "try" und "catch"?

Nee - try ... catch sollte man nur in Szenarios einsetzen, in denen wirkliche (Programmablauf-)Fehler auftreten koennen, auf die man anders nicht gescheit reagieren kann, die einem u.U. sogar das ganze Script zum Abbruch bringen wuerden.

Hier liegt aber kein solcher Fehler vor - lediglich zwei unterschiedliche Arten von Abfrageergebnis, entweder "enthaelt Datensaetze" oder "enthaelt keine Datensaetze".

Oder gibt es noch eine viel einfachere Lösung?

Ich wuerd's nach dem KISS-Prinzip einfach so umsetzen:

  
$result = $DBO->query(...);  
$foundRows = false; // Flag, welches aussagt, ob Datensaetze gefunden wurden; wird mit false initialisiert  
while($result->fetch(...)) {  
  $foundRows = true; // wenn die Schleife mindestens ein mal durchlaufen wird, dann gab's auch  
                     // mindestens einen Datensatz - also Flag auf true setzen  
  // hier erfolgt weitere Verarbeitung der Datensaetze  
}  
if(!$foundRows) {  
  // Reaktion auf den Fall, dass keine Ergebnisdatensaetze vorhanden waren  
}

MfG ChrisB