Я имею переменную, установленную в NULL, которую я пытаюсь вставить в базу данных, но по какой-то причине они продолжают поступать как «0». Im положительный, что столбец im пытается вставить в позволяет NULL и что по умолчанию установлено значение NULL. Вот мой код:
$insert = NULL; $query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());
Предупреждение:
Пожалуйста, не используйте функции
mysql_*
для нового кода. Они больше не поддерживаются, и сообщество начинает процесс устаревания . Вместо этого вы должны узнать о подготовленных операторах и использовать либо PDO, либо MySQLi .
Если вы хотите, чтобы он был NULL
(и вы действительно действительно хотите использовать mysqli_*
) в базе данных, вы можете сделать следующее:
$insert = NULL; $query = mysql_query("INSERT INTO `table1` (column1) VALUES (" .(($insert===NULL)? "NULL": "'".mysql_real_escape_string($insert)."'"). ")") or die(mysql_error());
См. Таблицы Бобби
Итак: в целом вы должны использовать подготовленные заявления .
Вы можете использовать MySQLi так:
$dbHandle = new mysqli(...); $query = "INSERT INTO `table1` (column1) VALUES (?)"; $statement = $dbHandle->prepare($query); if($statement){ $statement->bind_param('s', $insert); if(!$statement->execute()){ echo "Statement insert error: {$statement->error}"; } $statement->close(); } else { echo "Insert error: {$dbHandle->error}"; }
Попробуйте это для статического запроса:
$query = mysql_query("INSERT INTO `table1` (column1) VALUES (NULL)") or die(mysql_error());
Использование переменной:
$insert= NULL; $insert = ($insert===NULL)? 'NULL' : "'$insert'"; mysql_query("INSERT INTO `table1` (column1) VALUES ($insert)") or die(mysql_error());
Попробуйте без кавычек;
$query = mysql_query("INSERT INTO `table1` (`column1`) VALUES (".$insert.")") or die(mysql_error());
Запрос должен быть;
INSERT INTO table1
( column1
) VALUES (NULL);