0

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

Type - time

NULL - Yes

Default - NULL

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

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

mysql 中的 zip 是 int 类型(默认NULL),mysql 中的 st_time 是 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 上找到了这段代码,它显然解决了这个问题,但我不知道如何使用下面的代码插入多个值。

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)");
4

1 回答 1

0

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

因此$st_time = NULL,在您测试它时设置或者更确切地说是在您的情况下NULL不要管它。

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

于 2013-06-28T09:37:51.263 回答