我已經搜索了該網站,雖然我發現了類似的問題和答案,但我一直無法找到答案。經過4個小時的搜索後,我決定咬緊牙關,問問題。使用MySql在數據庫中輸入日期或空值
我有4個不需要的窗體中的日期字段。如果其中一個字段有條目,我希望它將日期輸入到數據庫中;如果任何一個字段留空,我希望它輸入一個日期。
我有一個if語句來檢查值是否爲空,如果是這樣的話$value = null
,否則使用$value = date("Y-m-d",strtotime($_post['value']))
將它轉換爲日期,這很好。
問題出在我的查詢中。如果我使用'$ value',它會正確插入日期,但不會插入空值,因爲使用'null'會使sql認爲它是一個字符串。如果我只使用$ value,那麼null插入就好了,但是日期以0000-00-00的形式出現。
任何意見將非常感激
感謝迄今意見...
空是允許的,這是我的腳本...
if(empty($_POST['fp32_original_install_date'])){
$fp32_install = NULL;
}else{
$fp32_install = date("Y-m-d",strtotime($_POST['fp32_original_install_date']));
}
$sql = "INSERT INTO accounts_cstm (id_c, support_c, install_date_c, sware_renewal_date_c, product_key_c, account_status_c, fp32_support_type_c, fp32_support_renewal_date_c, fp32_original_install_date_c) VALUES ('$Guid','$cdr_support', '$cdr_install', '$cdr_renew', '$prod_key', '$account_status', '$fp32_support', '$fp32_renew', $fp32_install)";
如果我在使用查詢$ fp32_install一個空值進入就好,但日期進入作爲0000-00-00,如果我使用'$ fp32_install'日期進行罰款,但NULL值作爲1970-01-01進入(可能是因爲它將'NULL'視爲一個字符串)
如果我回顯$ fp32_install,則值顯示爲2012-08-16,列的SQL類型爲日期,默認值爲NULL
不會使用具有適當佔位符的PDO來處理您的轉義嗎? – tadman 2012-08-16 16:06:44
看來你在MySQL上的日期字段不允許爲'NULL' – GusDeCooL 2012-08-16 16:06:50
請在你的問題中包含你的代碼。當我們看到代碼示例時,回答起來要容易得多。 – kapa 2012-08-16 16:06:59