2014-11-24 94 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

相关问题