具有空值

时间:2018-04-02 10:37:00

标签: php mysql date null

我有一个带有输入字段(type="date")的HTML表单和一个带有数据类型"date"的列的mysql数据库,当我直接在phpmyadmin中执行查询时,它接受null。

另外,当我在html表单中选择一个日期(使用浏览器默认日期选择器)时,查询会正确运行。但是,当我将上述输入留空时,会显示以下错误"日期值不正确:''对于列' received_date'。

感谢任何帮助摆脱这个问题。

以下是sql和DB / Table架构:

CREATE TABLE customer.tbl1 ( id INT NOT NULL AUTO_INCREMENT , usrname
VARCHAR(32) NOT NULL , received_date DATE NULL DEFAULT NULL , PRIMARY
KEY (id)) ENGINE = MyISAM;

$sql = "INSERT INTO tbl1 (usrname, received_date) VALUES ('$usrname',
'$received_date')";

3 个答案:

答案 0 :(得分:0)

答案取决于您的申请:Null是否为您的数据的有效值?

如果没关系,那么更新数据库架构以允许Null值(https://stackoverflow.com/a/35963275/3341745)。

如果您不希望此值为Null,则数据库检查正在执行其工作。在这种情况下,您应该在允许用户提交之前验证网页上的数据(https://www.w3schools.com/js/js_validation.asp)。

答案 1 :(得分:0)

试试这个。每当$ received_date为空时,它会将查询更改为插入NULL。

$sql = "INSERT INTO tbl1 (usrname, received_date) VALUES ('$usrname', " . (empty($received_date) ?  "NULL" : "'$received_date'") . ")";

答案 2 :(得分:0)

谢谢大家。 以下解决了这个问题:

Build #AI-173.4670197, built on March 22, 2018
JRE: 1.8.0_152-release-1024-b02 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 8.1 6.3

然而,在这里发布问题之前我尝试了这个(如果条件)NULL而没有单引号但是它没有用。现在单引号解决了这个问题。