2014-11-24 55 views
-1

我一直在尋找一個答案很長一段時間。我是PHP新手,我試圖將當前日期和時間插入到datetime類型的數據庫表列中。但它給了我錯誤。PHP錯誤轉換日期和/或時間從字符串轉換失敗

$tsql ="INSERT INTO metaTagsTable (Email,nMetaTheme,nMetaSpecification,sMetaDuration,nChildrenYearTo,nChildrenYearFrom,nMetaPaxChildren,nMetaPax,dMetaReturnDate,dMetaDepartureDate, nMetaDestinationSubArea,nMetaDestinationArea,nMetaDestinationCountry,nMetaDestination,nMetaDepartureSubArea,nMetaDepartureArea,nMetaDepartureCountry,nMetaDeparture,sMetaCategory,ModifiedDate,dCreatedDate,nSupplierId,VisitorID) VALUES ('".$array[0]."','".$array[1]."','".$array[2]."','".$array[3]."','".$array[4]."','".$array[5]."','".$array[6]."','".$array[7]."', 
'".$array[8]."','".$array[9]."','".$array[10]."','".$array[11]."','".$array[12]."','".$array[13]."','".$array[14]."','".$array[15]."','".$array[16]."','".$array[17]."','".$array[18]."',getdate(),getdate(),'".$array[21]."','".$array[22]."')"; 

陣列具有從該輸入製成:

test;null;null;null;null;null;null;null;null;null;null;null;"499366";null;null;null;null;null;"Catalogue";null;null;null;null 

錯誤:

Array ([0] => Array ([0] => 22007 [SQLSTATE] => 22007 [1] => 241 [code] => 241 [2] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from character string. [message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Conversion failed when converting date and/or time from character string.)) 

表設計:

CREATE TABLE [dbo].[metaTagsTableTMP](
[ID] [int] IDENTITY(1,1) NOT NULL, 
[Email] [nvarchar](50) NULL, 
[nMetaTheme] [nvarchar](20) NULL, 
[nMetaSpecification] [nvarchar](20) NULL, 
[sMetaDuration] [nvarchar](20) NULL, 
[nChildrenYearTo] [nvarchar](20) NULL, 
[nChildrenYearFrom] [nvarchar](20) NULL, 
[nMetaPaxChildren] [nvarchar](20) NULL, 
[nMetaPax] [nvarchar](20) NULL, 
[dMetaReturnDate] [nvarchar](50) NULL, 
[dMetaDepartureDate] [nvarchar](50) NULL, 
[nMetaDestinationSubArea] [nvarchar](20) NULL, 
[nMetaDestinationArea] [nvarchar](20) NULL, 
[nMetaDestinationCountry] [nvarchar](20) NULL, 
[nMetaDestination] [nvarchar](20) NULL, 
[nMetaDepartureSubArea] [nvarchar](20) NULL, 
[nMetaDepartureArea] [nvarchar](20) NULL, 
[nMetaDepartureCountry] [nvarchar](20) NULL, 
[nMetaDeparture] [nvarchar](20) NULL, 
[sMetaCategory] [nvarchar](20) NULL, 
[ModifiedDate] [datetime] NULL, 
[dCreatedDate] [datetime] NULL, 
[nSupplierId] [nvarchar](20) NULL, 
[VisitorID] [nvarchar](50) NULL, 
CONSTRAINT [PK_metaTagsTableTMP] PRIMARY KEY CLUSTERED 
+0

請你能不能發表您的$數組的內容,所以我們可以看到被傳遞什麼插入查詢。 – matwr 2014-11-24 12:44:09

+0

檢查更新請通過 – 2014-11-24 13:12:21

回答

0

我沒有想到的getdate()作爲一種方法,我不知道爲什麼。所以我沒有把正確的引號。 這是正確的查詢:

$tsql ="INSERT INTO metaTagsTable (Email,nMetaTheme,nMetaSpecification,sMetaDuration,nChildrenYearTo,nChildrenYearFrom,nMetaPaxChildren,nMetaPax,dMetaReturnDate,dMetaDepartureDate, nMetaDestinationSubArea,nMetaDestinationArea,nMetaDestinationCountry,nMetaDestination,nMetaDepartureSubArea,nMetaDepartureArea,nMetaDepartureCountry,nMetaDeparture,sMetaCategory,ModifiedDate,dCreatedDate,nSupplierId,VisitorID) VALUES ('".$array[0]."','".$array[1]."','".$array[2]."','".$array[3]."','".$array[4]."','".$array[5]."','".$array[6]."','".$array[7]."','".$array[8]."','".$array[9]."','".$array[10]."','".$array[11]."','".$array[12]."','".$array[13]."','".$array[14]."','".$array[15]."','".$array[16]."','".$array[17]."','".$array[18]."',".getdate().",".getdate().",'".$array[21]."','".$array[22]."')"; 
0

SQLDATETIME預計以下列格式的日期時間參數如果它是一個字符串::

yyyy-MM-dd HH:mm:ss 
+0

Thx,但爲什麼它應該是字符串?我不通過查詢正確插入任何字符串? – 2014-11-24 12:47:59

+0

您可以調試生成的INSERT語句,MsSQL錯誤表明它正在接收未知的字符串格式;我懷疑你試圖插入一個空字符串。你用什麼API來生成和執行這個查詢? – matwr 2014-11-24 12:52:23

+0

謝謝,我稍後再看看,因爲我現在無法訪問服務器; /。我認爲它非常標準的API =首先google搜索PHP mssql查詢...:D – 2014-11-24 13:19:01

相關問題