Выбор строк с нулевым полем с использованием подготовленных операторов PHP PDO и MySQL
Я конвертировал приложение, чтобы использовать подготовленные операторы PDO, а не mysqli, и столкнулся со странной проблемой. У меня есть несколько записей в базе данных, где ожидается, что поле будет нулевым. Не 'null' (строка) или '' (пустая строка), но NULL. Я строю свои запросы динамически, поэтому в прошлом, когда я сталкивался с пустой переменной в объекте, я строил запрос следующим образом:
WHERE fieldName is null;
И получит ожидаемые результаты, когда поле будет нулевым.
Теперь с PDO мои запросы не возвращают никаких результатов, и я не получаю никаких ошибок. Это просто не возвращает записи, которые я ожидал. Когда я повторяю построенные запросы и запускаю их непосредственно в MySQL, я получаю ожидаемые результаты, но в приложении результаты не возвращаются.
Некоторые вещи, которые я пробовал, включают создание запросов, которые выглядят так:
WHERE fieldName is null;
или же
WHERE fieldName <=> null;
Я также попробовал стандартное подготовленное утверждение:
WHERE fieldName = :fieldName
а затем связать с такими утверждениями:
$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);
Любая помощь с этим будет принята с благодарностью. Моя версия PHP 5.3.10 и MySQL 5.5.22. Как побочный вопрос, я до сих пор не ясно, в чем разница между bindParam и bindValue, поэтому, если есть смысл включить в ваш ответ, я был бы очень признателен за разъяснения по этому вопросу ...