2016-01-22 59 views
3

好日子,插入日期列0000-00-00

我嘗試使用PHP和MySQL腳本,但在日期列插入到數據導入到我的數據庫爲0000-00-00而不是其實際日期。請檢查我的代碼如下

if (isset($_POST['submit'])) { 
    $i=0; 

if (is_uploaded_file($_FILES['filename']['tmp_name'])) { 
    echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; 


} 

date('Y-m-d', strtotime(`Closed On`)); 
$handle = fopen($_FILES['filename']['tmp_name'], "r"); 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    if($i>0) { 
    $import="INSERT into ".$user."_products (`Invoice No`,`Receipt No`,`Category`,`Sub Category`,`ProductName`,`Sold On`,`Guest`,`GuestCenter`, 
     `Employee Code`,`SoldBy`,`Quantity`,`Promotion`,`Price`,`Discount`,`Prepaidcard Redemption`,`Net Price`,`Tax`,`ShippingCharge`, 
     `Package Redemption`,`Price Paid`,`Sale Value`,`Payment Type`,`Createdby`,`Status`,`Closed On`,`GuestCode`,`FirstVisit`,`Member`,`ClosedBy`,`BusinessUnit`) 
     values('$data[0]','$data[1]','$data[2]','$data[3]','".mysql_real_escape_string($data[4])."','$data[5]','".mysql_real_escape_string($data[6])."','$data[7]','$data[8]','$data[9]','$data[10]', 
     '$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]', 
     '$data[22]','$data[23]','$data[24]','$data[25]','$data[26]','$data[27]','$data[28]','$data[29]')"; 

     mysql_query($import) or die(mysql_error()); 
    } 
    $i++; 
} 

注:我的日期欄是我的數據庫

謝謝!

+0

您可能需要閱讀[這](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)約SQL注入。 –

+1

在mysql中插入日期是通過格式正確的字符串:YYYY-MM-DD。檢查你的插入,以確保你試圖插入的內容實際上是正確格式。 – Lance

+0

此外,由於你正在處理你的mysql代碼,所以一定要使用mysqli而不是mysql庫,因爲後者是折舊的。 – Lance

回答

2

要插入日期或時間戳到數據庫中您需要創建日期對象。 使用這種

日期( 'YM-d' 的strtotime($數據[ 'closed_on']))

+0

@lance我知道它作爲字符串存儲到數據庫中......但是如果日期格式與數據庫日期格式不匹配,那麼它會保存0000-000-00,您必須使用date('y-m-d')使格式正確。 –

+0

感謝您的想法,但我使用'「.date('y-m-d',strtotime($ data [24]))。」'來修復我的代碼而不是closed_on –

2

您需要通過串nowstrtotime()

這將返回UNIX當前時間格式。

date('Y-m-d', strtotime('now')); 

你的說法有兩個問題:

date('Y-m-d', strtotime(`Closed On`)); 

1)Closed On:不評價任何東西。

2)使用反引用函數參數是解析錯誤。參數應該用單引號括起來。

2

使用本

date('Y-m-d', strtotime($data[24]));