PHP mysql PDO отказывается устанавливать значение NULL
Я не могу установить поле с нулевым значением со значением по умолчанию от нуля до нуля, используя mysql pdo. Я могу сделать это, используя прямой sql.
Я пробовал: (в основном из этого вопроса Как вставить значения NULL с помощью PDO?)
-
Null Int
bindValue(':param', null, PDO::PARAM_INT);
-
Null Null
bindValue(':param', null, PDO::PARAM_NULL);
-
'Null', Int
bindValue(':param', 'NULL', PDO::PARAM_INT);
-
'Null', Null
bindValue(':param', 'NULL', PDO::PARAM_NULL);
-
Null
bindValue(':param', null);
-
'Null'
bindValue(':param', 'NULL');
-
и bindParam
аналоги из 5 и 6 с переменной, которая удерживала значение привязки.
Все, начиная с PDO, приводит к тому, что значение установлено на 0.
Версия PHP: PHP 5.3.2-1ubuntu4.10
ВЕРСИЯ СЕРВЕРА MYSQL: 5.1.63-0ubuntu0.10.04.1
ИЗМЕНИТЬ
Снимок экрана с информацией о колонке
![Picture]()
Ответы
Ответ 1
Для меня работает следующее:
<?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();
Перейдите в PHP null
, с типом PDO::PARAM_NULL
. Кроме того, убедитесь, что для вашей эмуляции подготовки установлено значение false. Это может помочь.
Ответ 2
Я настоятельно рекомендую сначала назначить все параметры для переменных, а затем передать эти переменные методу bindParam().
Вы можете назначить, передав NULL этим переменным, и он будет работать нормально.
$myVar = NULL;
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR);
Весь путь из Пакистана:)