为什么我的时间不会默认为null?

时间:2013-06-28 06:42:57

标签: mysql

如果我在phpMyAdmin下查看我的表结构,它具有以下结构:

Type - time

NULL - Yes

Default - NULL

那么为什么当我做一个简单的INSERT INTO时...时间值默认为00:00:00,即使我输入的值是null。我对类型int有同样的问题,但对varchar没有。

编辑 - 我已添加以下内容。

mysql中的

zip类型为int(默认为NULL),mysql中的st_time为type time(默认为NULL)。我已经测试了代码,它适用于zip,但不适用于st_time

if($zip == NULL){
$zip = 'NULL';
}
if($st_time == NULL){
$st_time = 'NULL';
}

$cont=mysql_query("INSERT INTO mytable(zip,st_time)VALUES($zip, $st_time)");

我在stackoverflow上发现了这个代码,显然解决了这个问题,但我不知道如何使用下面的代码插入多个vale。

mysql_query("INSERT INTO cb (name) VALUES (" . ($name == null ? "NULL" : "'$name'") . ")");

用解决方案编辑TAKE 2(警告 - 这很难看)

if($zip == NULL){
$zip = 'NULL';
}
if($st_time == NULL){
$st_time = 'NULL';
}
else{
$st_time = "'".$st_time."'";
}

$cont=mysql_query("INSERT INTO mytable(zip, st_time)VALUES($zip,  $st_time)");

1 个答案:

答案 0 :(得分:0)

您使用的是引用字符串'NULL'。 请改用NULL(不是带引号的字符串,而是NULL值)

所以设置$st_time = NULL或者更确切地说是在你的情况下,因为你正在测试它是NULL而不管它。

MySQL期望TIME字段作为字符串'12:00:00'传递,并且可以将其解析为其内部存储类型。如果传递的字符串无法正确解析,则默认为00:00:00