PHP Prüfen, ob ein Eintrag in der Datenbank existiert inkl. Rückgabe

Schnipp

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.141
Hallo zusammen,

ich beiße mir gerade schon wieder die Zähne an einer Funktion aus und erkenne leider nicht meinen Fehler. Die Funktion hat als Parameter die zwei Werte "a" und "b" und soll prüfen, ob in der Tabelle "table" beide Werte in einem Datensatz vorkommen. Wenn ja, dann soll sie TRUE liefern, andernfalls FALSE. Das will ich dann weiterverarbeiten. Hier der Code, der es hoffentlich klarer macht:

PHP:
function isDataInTable($a, $b) {
  $stmt = self::$_db->prepare("SELECT * FROM table WHERE (werta=:a) AND (wertb=:b)");
  $stmt->bindParam(":a", $a);
  $stmt->bindParam(":b", $b);
  $stmt->execute();

  if($stmt->rowCount() === 1) {
    return true;
  } else {
    return false;
  }
}

Und diese Funktion nutze ich dann später wie folgt:

PHP:
<?php
  if($db->isUserOnGuestlist(3,4) === TRUE) {
    echo "Daten vorhanden";
    } else {
    echo "Keine Daten gefunden";
  }
?>

Leider gibt er mir immer den Wert FALSE aus, auch wenn das SQL-Statement selbst ca. 4 Ergebnisse liefert.

Gruß Schnipp
 
if($stmt->rowCount() === 1)
auch wenn das SQL-Statement selbst ca. 4 Ergebnisse liefert.
 
Oh man, Asche auf mein Haupt ... gestern Abend war es spät, aber heute sollte ich eigentlich wieder frisch sein ... danke ;)
 
Nebenbei, du solltest COUNT benutzen, wenn du wirklich nur wissen willst ob Einträge vorhanden sind:
Code:
SELECT COUNT(*) FROM table WHERE (werta=:a) AND (wertb=:b)
 
Und wie genau verarbeite ich das Count dann weiter?
 
PHP:
$sel = "SELECT COUNT(*) as count FROM table WHERE (werta=:a) AND (wertb=:b)";
...
$stmt->execute();

$row = $stmt->fetch();
echo $row["count"];
 
Zurück
Oben