【问题标题】:PHP empty string error for mysql date column with null value具有空值的mysql日期列的PHP空字符串错误
【发布时间】:2018-04-02 10:37:00
【问题描述】:

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

此外,当我在我的 html 表单中选择一个日期(使用浏览器默认日期选择器)时,查询会正确运行。但是当我将上述输入留空时,会显示以下错误“日期值不正确:'' for column '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')";

【问题讨论】:

  • 检查if (empty($_post['date']))? NULL: $_POST['date']然后查询
  • 您能否分享您正在使用的 SQL 查询以及该表中的架构?
  • 在我的查询中,我使用了 INSERT INTO TBL1 (username, received_date) VALUES ('$usrname', '$received_date') 之类的变量...我认为我用单引号来包围变量导致问题。因为我用 NULL 替换了变量(不带引号)。有效。但是我不能在查询中永久使用 NULL,因为日期字段是可选的,可能会或可能不会选择日期。
  • 有问题,您在谈论SELECT,在这里您提供INSERT。非常混乱。请在您的问题中添加 HTML+CODE 以澄清您的问题。
  • 选择我的意思是从浏览器默认的日期时间选择器中选择日期。因为在 HTML 表单中,输入类型是日期。

标签: php mysql date null


【解决方案1】:

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

if (empty($received_date)) {
            $received_date= 'NULL';
}

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

【讨论】:

  • 使用相同,但在我的情况下它是 NULL 没有引号。
【解决方案2】:

答案取决于您的应用程序:Null 是您数据的有效值吗?

如果没问题,请更新您的数据库架构以允许 Null 值 (https://stackoverflow.com/a/35963275/3341745)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2015-11-09
    • 1970-01-01
    • 2010-09-20
    • 2011-03-05
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多