Php SQL SERVER(如果有)

Php SQL SERVER(如果有),php,sql-server,Php,Sql Server,我有一个在PHP中运行的查询,它应该检测数据库中已经存在的记录,如果它正在更新它,或者插入它,当它插入数据时,这个查询非常有效,但是我认为当它在更新时,它会给我这个错误 SQL错误:[Microsoft][ODBC SQL Server驱动程序][SQL Server]转换 将日期和/或时间从字符串转换为SQL时失败 SQLExecDirect中的状态22008 我不知道为什么它会这样做,因为数据与插入数据完全相同,插入数据工作正常。为什么会这样 IF EXISTS (SELECT count(

我有一个在PHP中运行的查询,它应该检测数据库中已经存在的记录,如果它正在更新它,或者插入它,当它插入数据时,这个查询非常有效,但是我认为当它在更新时,它会给我这个错误

SQL错误:[Microsoft][ODBC SQL Server驱动程序][SQL Server]转换 将日期和/或时间从字符串转换为SQL时失败 SQLExecDirect中的状态22008

我不知道为什么它会这样做,因为数据与插入数据完全相同,插入数据工作正常。为什么会这样

IF EXISTS
(SELECT count(DocumentNo) AS COUNT
FROM SalesOrders
WHERE (DocumentNo = '$OrderNo'))
UPDATE SalesOrders
SET RequestedDeliveryDate ='$RequestDelivery',
SupplierDocumentNo ='$SupplierDocumentNo',
SupplierAccountName = '$SupplierAccountName',
DispatchName ='$DispatchName'
WHERE (DocumentDate = '$OrderNo') ELSE
INSERT INTO SalesOrders (DocumentNo, DocumentDate,  CustomerAccountName,PostalName, RequestedDeliveryDate, SupplierDocumentNo, SupplierAccountName,DispatchName)
VALUES ('$OrderNo',
      '$OrderDate',
      '$AccountName',
      '$PostalName',
      '$RequestDelivery',
      '$SupplierDocumentNo',
      '$SupplierAccountName',
      '$DispatchName')
表格设计

    Column Name Data Type   Allow Null
    ID  int Unchecked
    DocumentNo  varchar(50) Checked
    DocumentDate    date    Checked
    CustomerAccountName varchar(100)    Checked
    PostalName  varchar(100)    Checked
    RequestedDeliveryDate   date    Checked
    ShipmentType    varchar(50) Checked
    Shipped int Checked
    Collected   int Checked
    OrderComplete   tinyint Checked
    SupplierDocumentNo  varchar(100)    Checked
    SupplierAccountName varchar(100)    Checked
    DispatchName    varchar(100)    Checked
    HiddenStatus    int Checked
用于提供插入/更新查询的查询结果

    DocumentNo  DocumentDate    CustomerAccountName RequestedDeliveryDate   PostalName  SupplierDocumentNo  SupplierAccountName Name
    233555      05/03/2015      CompanyName             16/04/2015      CompanyName NULL                    NULL        NULL
    233531      04/03/2015      CompanyName             13/04/2015      CompanyName NULL                    NULL        NULL
    233475      02/03/2015      CompanyName             09/04/2015      NULL        NULL                    NULL        NULL
    233561      05/03/2015      CompanyName             07/04/2015      CompanyName NULL                    NULL        NULL
    233474      02/03/2015      CompanyName             02/04/2015      NULL        NULL                    NULL        NULL
    233379      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233383      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233387      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233391      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233397      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233401      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233404      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233408      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL
    233412      24/02/2015      CompanyName             31/03/2015      NULL        NULL                    NULL        NULL

谢谢,但是您能提供导致查询失败的
$RequestDelivery
的确切值吗?示例数据中的值就是确切值,php中的函数循环遍历每个结果,然后根据结果是否已存在进行更新/插入使用SQL Profiler查看出错时向SQL Server发送的命令。也许错误的原因很明显。