Как вставить значение NULL
в поле базы данных (MySQL) с помощью char (2)?
До того как я использовал mysql_query
и я получил в базе данных следующее значение: NU
Вместо этого значения должно быть NULL
.
Прочитав этот вопрос Я перешел на подготовленные высказывания. У меня все еще есть NU
в моей базе данных.
Теперь к моему коду. Я читаю строку для строки CSV. Тогда я делаю
if(empty($data[$c])) {
$data[$c] = NULL;
}
Если я получаю эхо $ data [1], я получаю NULL
. Затем я делаю свой подготовленный запрос:
$stmt = $connection->prepare("INSERT INTO table (first, second, ..) VALUES (?, ?, ...)");
$stmt->bind_param("ss...", $data[0], $data[1], ...);
$res=$stmt->execute();
Что не так?
Edit:
Согласно Шиплу, я сделал следующее:
Сделайте это без указания последних параметров, которые вызывают NU
:
$stmt = $connection->prepare("INSERT INTO employee (first, second, ...) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssssssssssii", $data[0], $data[1], ..., $last);
Использование default
:
$stmt = $connection->prepare("INSERT INTO employee (first, second, ..., last) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, default(last))");
$stmt->bind_param("sssssssssssssii", $data[0], $data[1], ...);
Но все тот же результат. Поле char (2) имеет значение по умолчанию = NULL. Как это может быть? Похоже, проблема не в запросе. Я думаю, что самым простым решением будет запрос на обновление ...
Создать таблицу:
CREATE TABLE IF NOT EXISTS `mytable` (
`id` int(11) NOT NULL auto_increment,
`text` varchar(128) default NULL,
`no` int(11) default NULL,
`problemfield` char(2) default NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=832 ;