Wybieranie wierszy, w których pole ma wartość null, przy użyciu przygotowanych instrukcji PHP PDO i MySQL

Konwertowałem aplikację, aby używać przygotowanych instrukcji PDO, a nie mysqli, i napotykam na dziwny problem. Mam kilka rekordów w bazie danych, w których oczekuje się, że pole będzie puste. Nie „null” (string) lub „” (pusty ciąg), ale NULL. Moje zapytania buduję dynamicznie, więc w przeszłości, gdy natknąłem się na zmienną null w obiekcie, zbudowałbym takie zapytanie:

WHERE fieldName is null;

I uzyska oczekiwane wyniki, gdy pole będzie zerowe.

Teraz z PDO moje zapytania nie zwracają żadnych wyników i nie otrzymuję żadnych błędów. Po prostu nie zwraca nagrań, których oczekiwałbym. Kiedy powtarzam zbudowane zapytania i uruchamiam je bezpośrednio w MySQL, otrzymuję oczekiwane wyniki, ale w aplikacji nie ma zwróconych wyników.

Niektóre z rzeczy, które próbowałem, obejmują tworzenie zapytań, które wyglądają tak:

WHERE fieldName is null;

lub

WHERE fieldName <=> null;

Wypróbowałem również standardowe przygotowane zestawienie:

WHERE fieldName = :fieldName

a następnie wiążące z tego rodzaju oświadczeniami:

$stmt->bindParam(":$field", $value);
$stmt->bindParam(":$field", $value, PDO::PARAM_NULL);
$stmt->bindParam(":$field", null, PDO::PARAM_NULL);
$stmt->bindValue(":$field", null, PDO::PARAM_NULL);
$stmt->bindValue(":$field", null, PDO::PARAM_INT);

Każda pomoc zostanie doceniona. Moja wersja PHP to 5.3.10, a MySQL to 5.5.22. Na marginesie, nadal nie mam jasności co do różnicy między bindParam i bindValue, więc jeśli ma sens dołączenie do odpowiedzi, naprawdę doceniłbym pewne wyjaśnienie na ten temat ...

questionAnswers(3)

yourAnswerToTheQuestion