Я не могу установить поле с нулевым значением со значением по умолчанию от нуля до нуля, используя mysql pdo. Я могу сделать это, используя прямой sql.
Я пробовал: (в основном из этого вопроса. Как вставить значения NULL с помощью PDO? )
Null Int
bindValue(':param', null, PDO::PARAM_INT);
Ноль ноль
bindValue(':param', null, PDO::PARAM_NULL);
'Null', Int
bindValue(':param', 'NULL', PDO::PARAM_INT);
'Ноль ноль
bindValue(':param', 'NULL', PDO::PARAM_NULL);
Ноль
bindValue(':param', null);
'Ноль'
bindValue(':param', 'NULL');
и 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);
Весь путь от Пакистана 🙂