Auswählen von Zeilen, in denen ein Feld null ist, mit von PHP PDO vorbereiteten Anweisungen und MySQL

Ich habe eine App so konvertiert, dass sie PDO-vorbereitete Anweisungen anstelle von mysqli verwendet, und es tritt ein seltsames Problem auf. Ich habe einige Datensätze in der Datenbank, in denen erwartet wird, dass ein Feld null ist. Nicht 'null' (Zeichenfolge) oder '' (leere Zeichenfolge), sondern NULL. Ich erstelle meine Abfragen dynamisch. Als ich in der Vergangenheit auf eine Nullvariable in einem Objekt stieß, erstellte ich die Abfrage folgendermaßen:

WHERE fieldName is null;

Und würde die erwarteten Ergebnisse erhalten, wenn das Feld null war.

Jetzt mit PDO geben meine Abfragen keine Ergebnisse zurück und ich erhalte keine Fehler. Es gibt einfach nicht die Aufzeichnungen zurück, die ich erwarten würde. Wenn ich die erstellten Abfragen wiederhole und sie direkt in MySQL ausführe, erhalte ich die erwarteten Ergebnisse, aber innerhalb der Anwendung werden keine Ergebnisse zurückgegeben.

Einige der Dinge, die ich ausprobiert habe, umfassen das Erstellen von Abfragen, die so aussehen:

WHERE fieldName is null;

oder

WHERE fieldName <=> null;

Ich habe auch die vorbereitete Standardaussage ausprobiert:

WHERE fieldName = :fieldName

und dann verbindlich mit diesen Arten von Aussagen:

$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);

Jede Hilfe dabei wäre sehr dankbar. Meine PHP-Version ist 5.3.10 und MySQL ist 5.5.22. Was den Unterschied zwischen bindParam und bindValue betrifft, bin ich mir immer noch nicht sicher. Wenn es also Sinn macht, in Ihre Antwort aufzunehmen, würde ich mich über eine Klarstellung zu diesem Thema sehr freuen ...

Antworten auf die Frage(3)

Ihre Antwort auf die Frage