2017-09-06 79 views
0

我有一個客戶端表和一個人(用於測試)表的MySQL數據庫。我的HTML,PHP和腳本在人員表中按預期工作。當我的客戶表,可以使用相同的編碼,我得到以下錯誤「1292:不正確的日期值:‘在行’列‘SALE_DATE’1PHP MYSQL,1292:不正確的日期值:''列'sale_date'在第1行

我的HTML代碼如下:

<label>Sale Date:&nbsp <input id="cSaleDate" class="cSale" type="date" name="cSaleDate"></label> 

我的PHP代碼:

$sale_date = mysqli_real_escape_string($db,$_POST['cSaleDate']); 

if (isset($_POST['cSaleDate'])) 
    { 
     include_once('client.php'); 
     $saleDate = date('0000-00-00', strtotime($sale_date)); 
     if (!empty($_POST['cSaleDate'])) 
     { 
      $saleDate = date('Y-m-d', strtotime($sale_date)); 
     } 
    } 

$fields = 'fips_code, size_code, client_name, client_state, sale_date'; 
$values = "'$fips_code', '$size_code', '$client_name', '$client_state', '$saleDate'"; 

$sql = "INSERT INTO clients ($fields) VALUES ($values)"; 

的發售日期則列設置爲:

Name: sale_date 
Datatype: DATE 
Default: NULL 

正如前面提到的,THI s代碼在「person」表中的日期中起作用,但不與「clients」表中的日期一起使用。我在兩個表上都設置了相同的日期列。任何幫助或想法,爲什麼這對一張桌子,但不是另一個工程將不勝感激。

+0

「$ saleDate = date('0000-00-00',strtotime($ sale_date));」 - 你可以先清理你的代碼。知道你發佈了什麼樣的值以及結果SQL是什麼樣子也是很有幫助的。 – symcbean

回答

0

感謝所有幫助。我最終在插入中使用了一個三元語句,如果輸入爲空,我可以在數據庫的日期字段中插入'NULL'。

$sql = "INSERT INTO table (SaleDate) VALUES (" . ($saleDate == '' ? 'NULL' : "'$saleDate'") . ")" 
0

你的代碼在很大程度上取決於$_POST['cSaleDate']和你提供的代碼片段,如果你實際上沒有得到那個值,那麼$saleDate將是未定義的。這是我最好的猜測問題可能是什麼。

下面是重新編寫代碼段的可能方式:

// It seems you want this as your default if there is no $_POST['cSaleDate']? 
$saleDate = '0000-00-00'; 

// Now check if you should overwrite this default 
if (isset($_POST['cSaleDate'])) { 
    include_once('client.php'); 
    if (! empty($_POST['cSaleDate'])) { 
     $saleDate = date('Y-m-d', strtotime($_POST['cSaleDate'])); 
    } 
} 

// Now do your escape and db insert 
$saleDate = mysqli_real_escape_string($db, $saleDate); 

$fields = 'fips_code, size_code, client_name, client_state, sale_date'; 
$values = "'$fips_code', '$size_code', '$client_name', '$client_state', '$saleDate'"; 

$sql = "INSERT INTO clients ($fields) VALUES ($values)"; 
+1

建議將0000-00-00作爲默認日期值是很危險的,因爲根據MySQL配置,此值可能會生成無效的日期值錯誤。如果沒有設置日期,則使用null。 – Shadow

+0

OP在代碼中有它,所以我將它保留原樣,但我同意你的建議。 – neuromatter

+0

不幸的是,當type = date輸入爲空時,我得到一個無效的日期格式錯誤。這就是爲什麼我使用$ saleDate = date('0000-00-00',strtotime($ sale_date));.我無法接受一個空白的日期。 – RAD

相關問題