Tom: Vergleich liefert immer true

Beitrag lesen

Hello,

ich schreibe gerade eine Funktion die überprüfen soll, ob es einen bestimmten Eintrag in einer Datenbac
Datenbank schon gibt oder nicht.

{
...
$res = mysqli_query($this->db, "SELECT COUNT(*) FROM meineTabelle WHERE foo='$bar'");
$count = @mysqli_fetch_row($res);

^
Warum machst Du sowas? Das ist kontraproduktiv. Fehlermeldungen, bzw. Statusmeldungen sind keine Feinde, sondern sollten immer ausgewertet werden:

if($count > 0 ){
return true;
}else {
return false;
}

Auch wenn es keine Einträge foo="$bar" gibt wird true zurück gegeben.

$res = mysqli_query($this->db, "SELECT COUNT(*) FROM meineTabelle WHERE foo='$bar'");

if (!$res)
{
    ### hier ist 'was schief gegangen
    echo "<p>".htmlspecialchars($mysqli_error($con));
}
else
{
    $count = @mysqli_fetch_row($res);

mysqli_free_result($res);

if($count > 0 )
    {
        return true;         ## ein einfaches return ist hier eventuell falsch.
    }                        ## Wenn es sich um eine Funktion handelt,
    else                     ## in der die Connection aufgebaut wird,
    {                        ## muss diese auch wieder geschlossen werden
        return false;        ## Auf jeden Fall muss das Resultset freigegeben werden
    }
}

Liebe Grüße aus dem Cyberspace

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de