【发布时间】:2017-06-20 12:25:33
【问题描述】:
在我的网站上,托管在 LAMP 堆栈上,我有一个简单的 html POST 表单,其中包含一堆输入和两个 datetime-local 输入
<form>
...
<input id="PublicationDate" type="datetime-local" name="PublicationDate"/>
<input id="ExpirationDate" type="datetime-local" name="ExpirationDate"/>
...
</form>
这些输入与 MySQL 表中的两个 Datetime 字段匹配:
...
PublicationDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
ExpirationDate DATETIME,
使用这个 php 代码:
// Prepare query
$Query = $this->DB->prepare("
INSERT INTO Article(Title, Subtitle, Author, PublicationDate, ExpirationDate, Body)
VALUES(?, ?, ?, IFNULL(?, NOW()), ?, ?)");
$Query->bindParam(1, $Data["Title"]);
$Query->bindParam(2, $Data["Subtitle"]);
$Query->bindParam(3, $Username);
$Query->bindParam(4, $Data["PublicationDate"]); // <-
$Query->bindParam(5, $Data["ExpirationDate"]); // <-
$Query->bindParam(6, $Data["Body"]);
一开始,使用相同的 MySQL/Php 设置,但没有 html 表单中的实际字段,一切正常:PublicationDate 设置为 NOW() 和 ExpirationDate 到NULL。
添加字段后,如果我将这些字段留空(以便将 NOW() 和 NULL 作为值)查询将失败。
我认为这个问题是由 datetime-local 输入引起的,因为我可以将 Subtitle 字段留空以便将相应的 MySQL 行设置为 @ 987654328@。知道如何解决这个问题吗?
编辑:
$Data 数组是作为参数传递给函数的 $_POST 数组
【问题讨论】: