2013-06-28 75 views
0

如果我把我的表結構phpMyAdmin的下它的結構如下:爲什麼我的時間類型默認爲空?

Type - time

NULL - Yes

Default - NULL

那麼,爲什麼當我做一個簡單的INSERT INTO ...沒有價值時間默認爲00:00:00,即使我輸入的值是null。對於類型int,我遇到了同樣的問題,但不適用於varchar。

編輯 - 我添加了下面。

mysql中的zip類型爲int(默認爲NULL),mysql中的st_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)"); 

我發現在這個計算器代碼,這顯然解決了這一問題,但我不知道如何使用下面的代碼中插入一個以上的淡水河谷。

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)"); 
+2

向我們展示您的表架構和insert語句。 –

+0

可能是因爲你的NULL是一個空字符串。 – gbn

回答

0

您使用的是帶引號的字符串'NULL'。 使用NULL代替(不帶引號的字符串但NULL值)

所以設置$st_time = NULL或者說在你的情況,你正在測試它是NULL息事寧人。

MySQL期望TIME字段以字符串形式傳遞'12:00:00',它可以將其解析爲其內部存儲類型。如果你傳遞一個字符串,它不能正確解析它將默認爲00:00:00

+0

您的信息幫助我找到了解決方案。我已更新問題以顯示解決方案。 – steve

相關問題