To zależy od tego, co masz na myśli.
mysql_result zwraca FALSE
w przypadku niepowodzenia, co może się zdarzyć, jeśli podasz nieprawidłowy (wiersz, pole). Aby to sprawdzić, użyj operatora tożsamości o numerze ===
, który sprawdza zarówno wartość, jak i typ. Operator równości ==
, funkcja empty()
i warunkowa ocena instrukcji if sprawdzają wartość, ale nie typ.
Oznacza to, że za pomocą jednego z tych metod nie ma żadnej różnicy pomiędzy różnymi wartościami, które wszyscy równają się Boolean FALSE
, jak pustych strun, pustych tablic, ciąg '0'
i wartości NULL
.
Więc jeśli chcesz być naprawdę pewny o tym można zrobić coś jak następuje:
if ($description === FALSE) {
throw new Exception("The row $i was out of range in query $query.");
} else if ($description === NULL) {
// assuming that the description field has a default value of NULL
// * this one I'm not sure about.. the documentation for mysql_result claims
// that it returns a string, so this may never happen.
// It's left as an exercise for the reader.
throw new Exception("Uninitialized value in result row $i of db query $query");
} else if ($description === '') {
echo "No description available";
} else {
echo $description;
}
Since empty()
zwrotów true
pod podobnym zestawie warunków do równości (==
) z FALSE
, tym bardziej ścisłe sprawdzanie typu byłoby szczególnie ważne w przypadkach, w których wynik mógłby faktycznie być "0"
.
Najwyraźniej nie mogę publikować więcej niż jednego hiperłącza, więc nie mogłem połączyć się z dokumentacją dla operatorów porównania ("http://php.net/manual/en/language.operators.comparison.php") lub pustej funkcji ("http://php.net/empty"). Na szczęście ich bezpieczeństwo jest stosunkowo niedbałe. Mwuh Hah!
Działa idealnie, wielkie dzięki. –
Nigdy nie musisz używać Empty! – dynamic
@ yes123: Czy mógłbyś to wyjaśnić? Nie potrzebujesz go na każdym koncie, ale dlaczego go nie używać? – Sk8erPeter