Я пытаюсь разрешить ввод значений NULL (для запретов постоянных типов) при вставке формы, но если поле оставить пустым, оно вставит 0000-00-00 00:00:00
Таблица BannedMembers
выглядит следующим образом:
CREATE TABLE BannedMembers
(
BanID INT NOT NULL AUTO_INCREMENT,
MemberID INT NOT NULL ,
WarningSent BIT NOT NULL ,
BannedDate DATETIME NOT NULL ,
BanDuration DATETIME NULL ,
PRIMARY KEY (BanID),
FOREIGN KEY (MemberID)
REFERENCES Members(MemberID)
);
Я хочу включить постоянные запреты, оставив длительность как NULL, мой скрипт HTML / PHP (сокращенный):
<form method="post" name="banmember_form" id="banmember_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Banned Until? (Leave empty for permanent)
<input type="date" class="form-control" name="banmember_duration" id="banmember_duration" placeholder="dd/mm/yyyy">
<button type="submit" name="addbannedmember_submit" id="addbannedmember_submit">Add</button>
</form>
<?php
if(isset($_POST["addbannedmember_submit"]))
{
//Check if the duration is empty (for permanent bans)
if (empty($_POST["banmember_duration"]))
{
$banDuration = NULL ;
}
else
{
$banDuration = $_POST["banmember_duration"];
}
$addBannedMemberSql = "INSERT INTO BannedMembers(MemberID, BannedDate,
BanDuration)
VALUES (".$_POST["banmember_name"]."',NOW(),'$banDuration') ";
$conn->exec($addBannedMemberSql);
echo "<meta http-equiv='refresh' content='0'>";
}
?>
Из того, что я прочитал, и что я смогузнайте, что значение NULL, указанное выше, сохраняется как ''
, поэтому, когда оно вставляется, по умолчанию возвращается 00:00...etc
.Я не мог найти ответ о том, как это исправить, многие идеи говорили об удалении ''
s, в то время как другие говорили, что включать их, я пытался ({$banDuration})
в моей INSERT
, но та же проблема.
Я не совсем понимаю подготовленные операторы, так как я новичок в этом, и я надеялся, что был способ сохранить NULL как пустую сущность для передачи в БД, если он оставлен пустым пользователем.