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

$ INSERT 문에 전달되는 내용을 볼 수 있도록 $ array의 내용을 게시 할 수 있습니까? – matwr

+0

업데이트 pls –

답변

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,하지만 그것이 문자열이어야하는 이유를 확인 하시겠습니까? 쿼리를 올바르게 수행하여 문자열을 삽입하지 않습니까? –

+0

생성 된 INSERT 문을 디버깅 할 수 있습니까? MsSQL 오류는 알 수없는 문자열 형식을 제공함을 나타냅니다. 빈 문자열을 삽입하려고합니다. 이 쿼리를 생성하고 실행하는 데 사용하는 API는 무엇입니까? – matwr

+0

고맙습니다. 서버에 액세스 할 수 없으므로 잠시 후에 살펴 보겠습니다. /. 나는 꽤 표준 API = 첫 번째 구글 검색 PHP mssql 쿼리라고 생각한다. : D –

관련 문제