在我的网站上,托管在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 < / strong>到NULL
。
添加字段后,如果我将这些字段留空(为了将NOW()
和NULL
作为值),查询将失败。
我认为这个问题是由 datetime-local 输入引起的,因为我将 Subtitle 字段留空是没有问题的,以便将相应的MySQL行设置为{ {1}}。知道如何解决这个问题吗?
NULL
数组是作为函数
$Data
数组
答案 0 :(得分:0)
当您插入NULL时,您正在检查其中一个值,而根本不检查另一个值。
但是,当发送表单时,值不会为NULL,它们将是空字符串,因此如果它们为空,您可能希望将它们设置为NULL:
from picamera import PiCamera
camera=PiCamera()
camera.start_recording("video.h264")
camera.wait_recording(60*5)
camera.stopr_preview()
camera.close()
请注意,这是非常基本的,您应该在字段中添加真实的验证,以检查它们是否符合您的预期。