当前位置: 首页 > 知识库问答 >
问题:

MySQL,如何插入空日期

呼延源
2023-03-14

我在将空值插入MySQL表的日期字段时遇到问题。

下面是插入查询:

$query = 'INSERT INTO table (column_s1, column_s2, column_d1, column_d2)
VALUES ("'.$string1.'", "'.$string2.'", '.$date1.', '.$date2.')';

s1和s2列采用字符串值,d1和d2列采用日期。当我只使用字符串字段运行这个查询时,没有问题。

日期值可以设置为空,所以我没有在查询中包含引号,而是在前面将它们添加到变量中。这是我用来设置日期值的php代码:

if (empty($date1)){
    $date1 = NULL;
}
else{
    $date1part = explode("/",$date1);
    $date1 = '"'.$date1part[2].'/'.$date1part[1].'/'.$date1part[0].'"';
}

当日期值全部设置时,记录将被正确插入。但是,当其中一个日期为空时,将不插入任何内容。

为什么我不能像这样在MySQL中插入空值?

共有3个答案

柴耀
2023-03-14

如果NULL不起作用,只需将您的日期传递为"0000-00-00":

$chequeDate = "0000-00-00";
鲜于阳成
2023-03-14

您应该先将空变量转换为空字符串,如下所示:

if(is_null($date1)){
    $date1 = 'NULL';
}

如果您使用的是MySQL日期列,那么在创建它时还必须指定它应该为null,如下所示:

CREATE TABLE `table` (
id INT NOT NULL AUTO_INCREMENT,
date DATE NULL DEFAULT NULL,
PRIMARY KEY(id)
)

使用绑定参数执行查询也非常重要,例如使用pdo

  1. http://www.php.net/manual/en/pdo.construct.php

比如:

$query = 'INSERT INTO table (column_s1, column_s2, column_d1, column_d2)
VALUES (?, ?, ?, ?)';
$stmt = $db->prepare($query);
$stmt->execute(array($string1,$string2,$date1,$date2));
寇涵容
2023-03-14

试试这个:

$query = "INSERT INTO table (column_s1, column_s2, column_d1, column_d2) 
          VALUES ('$string1', '$string2', " . ($date1==NULL ? "NULL" : "'$date1'") . ", " . ($date2==NULL ? "NULL" : "'$date2'") . ");";

例如,如果您将其放入查询:

$string1 = "s1";
$string2 = "s2";
$date1 = NULL;
$date2 = NULL;

结果应该是:

INSERT INTO table (column_s1, column_s2, column_d1, column_d2) VALUES ('s1', 's2', NULL, NULL);
 类似资料:
  • 问题内容: 我正在努力处理一些PHP / MySQL代码。我正在从1个表中读取,更改一些字段,然后写入另一个表,如果我希望它在数据库中插入null(该字段允许使用null值),则如果插入且其中一个数组值是null则什么也不会发生。它看起来像这样: 并非每一行都具有null值,并且在我的查询中还有更多字段和2列可能为null或不为null 问题答案: 这是一个使用 准备好的语句 确实可以省去您麻烦的

  • 问题内容: 我正在使用jQuery datepicker datepicker的格式是这个 我在插入数据库时​​出错,仅插入0000-00-00 00 00 00 我的密码是 我确定我的插入内容正确无误。 问题答案: 如日期和时间文字中所述: MySQL可以识别以下格式的值: 作为或格式的字符串。允许使用“宽松”语法:任何标点符号都可以用作日期部分之间的分隔符。例如,,,,和是相等的。 * 作为没

  • 本文向大家介绍如何固定MySQL插入?,包括了如何固定MySQL插入?的使用技巧和注意事项,需要的朋友参考一下 借助以下语法,可以在同时插入多个记录时加快MySQL的插入速度 让我们首先创建一个演示表 同时插入多个记录。查询如下-

  • 注意:在MySQL表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:

  • 问题内容: 我是mySQL:s联合函数的新手,至少在使用它们进行插入时。根据网上发现的示例,我得到了以下工作: 好的,对此并不奇怪。但是,当我想向数据库中插入与Select的完成逻辑无关的第三个值时会发生什么? 喜欢 : 那怎么办? 问题答案: 您也可以“选择”文字值: 因此,您也可以在和s中使用它。

  • 问题内容: 我知道MySQL中并发SELECT和INSERT存在一个问题。但是,我的问题是,如果我与MySQL建立两个连接并继续使用这两个连接来加载数据,MySQL是同时获取数据还是在加载另一个之前等待一个完成? 我想知道两种情况下MySQL的行为。就像当我尝试在打开单独的连接时尝试同时在同一张表或不同表中加载数据时一样。 问题答案: 如果要创建与数据库的新连接并从两个链接执行插入,那么从数据库的