PHP mysql PDO отказывается устанавливать значение NULL

Я не могу установить поле с нулевым значением со значением по умолчанию от нуля до нуля, используя mysql pdo. Я могу сделать это, используя прямой sql.

Я пробовал: (в основном из этого вопроса. Как вставить значения NULL с помощью PDO? )

  1. Null Int

    bindValue(':param', null, PDO::PARAM_INT); 
  2. Ноль ноль

     bindValue(':param', null, PDO::PARAM_NULL); 
  3. 'Null', Int

     bindValue(':param', 'NULL', PDO::PARAM_INT); 
  4. 'Ноль ноль

     bindValue(':param', 'NULL', PDO::PARAM_NULL); 
  5. Ноль

     bindValue(':param', null); 
  6. 'Ноль'

     bindValue(':param', 'NULL'); 
  7. и bindParam переменные связывания 5 и 6 с переменной, которая удерживала значение привязки.

Все от PDO приводит к тому, что значение установлено на 0.

PHP-версия: PHP 5.3.2-1ubuntu4.10

MYSQL SERVER VERSION: 5.1.63-0ubuntu0.10.04.1

EDIT Снимок экрана с информацией о колонке

Картина

Для меня работает следующее:

 <?php $pdo = new PDO("mysql:host=localhost;dbname=test", "root", "pass"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $pdo->prepare("INSERT INTO `null_test` (`can_be_null`) VALUES (:null)"); $stmt->bindValue(":null", null, PDO::PARAM_NULL); $stmt->execute(); 

Перейдите в null PHP, с типом PDO::PARAM_NULL . Кроме того, убедитесь, что для вашей эмуляции подготовки установлено значение false. Это может помочь.

Я настоятельно рекомендую сначала назначить все параметры для переменных, а затем передать эти переменные методу bindParam ().

Вы можете назначить, передав NULL этим переменным, и он будет работать нормально.

 $myVar = NULL; $conn->bindParam(':param1' , $myVar , PDO::PARAM_STR); 

Весь путь от Пакистана 🙂