如果我在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)");
答案 0 :(得分:0)
您使用的是引用字符串'NULL'
。
请改用NULL
(不是带引号的字符串,而是NULL值)
所以设置$st_time = NULL
或者更确切地说是在你的情况下,因为你正在测试它是NULL
而不管它。
MySQL期望TIME
字段作为字符串'12:00:00'
传递,并且可以将其解析为其内部存储类型。如果传递的字符串无法正确解析,则默认为00:00:00
。