2015-06-12 99 views
1

我试图执行插入查询到sql服务器。然而,我每次执行它只是返回查询<b>可捕获致命错误</b>:类DateTime的对象无法转换为字符串

捕获的致命错误:类的DateTime对象无法 转换为字符串C:\ XAMPP \ htdocs中\融合\ insertTrade.php 线

我不明白这是怎么回事,因为在该行我还没有做与任何日期时间。任何人都可以帮忙吗?

insertTrade.php:

$fullName = $_POST["fullName"]; 
    $ticSymbol = $_POST["tickSymbol"]; 
    $limitOrder = $_POST["limitOrder"]; 
    $limitPrice = $_POST["limitPrice"]; 
    $quantity = $_POST["quantity"]; 
    $contingentOrder = $_POST["contingentOrder"]; 
    $contingentLimitPrice = $_POST["contingentPrice"]; 
    $contingentQuantity = $_POST["contingentQuantity"]; 
    $date = new DateTime(); 
    $date -> setDate($_POST["year"], $_POST["month"], $_POST["day"]); 
    $date -> setTime($_POST["hours"], $_POST["minutes"], $_POST["seconds"]); 
    // var_dump($date); 
     $query = "INSERT INTO [competitionTrade] 
        ([fullName] 
        ,[date] 
        ,[limitOrder] 
        ,[quantity] 
        ,[tickerSymbol] 
        ,[limitPrice] 
        ,[contingentOrder] 
        ,[contingentQuantity] 
        ,[contingentLimitPrice]) 
      VALUES 
        (<$fullName, varchar(50),> 
        ,<$date, datetime,> 
        ,<$limitOrder, varchar(50),> //line 29 
        ,<$quantity, int,> 
        ,<$ticSymbol, varchar(50),> 
        ,<$limitPrice, float,> 
        ,<$contingentOrder, varchar(50),> 
        ,<$contingentQuantity, int,> 
        ,<$contingentLimitPrice, float,>)"; 
     $stmt = sqlsrv_query($conn, $query); 

编辑1:按照D4V1D的建议下,我把它改成这样:

$fullName = $_POST["fullName"]; 
     $ticSymbol = $_POST["tickSymbol"]; 
     $limitOrder = $_POST["limitOrder"]; 
     $limitPrice = $_POST["limitPrice"]; 
     $quantity = $_POST["quantity"]; 
     $contingentOrder = $_POST["contingentOrder"]; 
     $contingentLimitPrice = $_POST["contingentPrice"]; 
     $contingentQuantity = $_POST["contingentQuantity"]; 
     $date = new DateTime(); 
     $date -> setDate($_POST["year"], $_POST["month"], $_POST["day"]); 
     $date -> setTime($_POST["hours"], $_POST["minutes"], $_POST["seconds"]); 
     // $dateString = $date->format('Y-m-d H:i:s'); 
     // var_dump($date); 
      $query = "INSERT INTO [competitionTrade] 
         ([fullName] 
         ,[date] 
         ,[limitOrder] 
         ,[quantity] 
         ,[tickerSymbol] 
         ,[limitPrice] 
         ,[contingentOrder] 
         ,[contingentQuantity] 
         ,[contingentLimitPrice]) 
       VALUES 
         (<$fullName, varchar(50),> 
         ,<$date->format('Y-m-d H:i:s'), datetime,> //line 29 
         ,<$limitOrder, varchar(50),> 
         ,<$quantity, int,> 
         ,<$ticSymbol, varchar(50),> 
         ,<$limitPrice, float,> 
         ,<$contingentOrder, varchar(50),> 
         ,<$contingentQuantity, int,> 
         ,<$contingentLimitPrice, float,>)"; 
      $stmt = sqlsrv_query($conn, $query); 

现在说

未定义的属性:日期时间: :$ format C:\ xampp \ htdocs \ fusion \ insertTrade.php on line

+6

插入'$日期 - >格式( 'YMD H:I:S')'(返回一个字符串),而不是将只是'$ date'(这是一个'Datetime'对象)。 – D4V1D

+0

获取PHP发送给SQL服务器的实际字符串,并尝试手动运行它。有一个可能格式错误的日期时间列。 – Paolo

+0

[DateTime类的对象无法转换为字符串]的可能重复(http://stackoverflow.com/questions/10209941/object-of-class-datetime-could-not-be-converted-to-string) – D4V1D

回答

3

这是因为您要包括的[date]领域,对象日期时间字符串$query中(因此Object could not be converted to string错误)。

你需要做的这样:

$date = $date->format('Y-m-d H:i:s'); // $date is now a string 
$query = "INSERT INTO [competitionTrade] 
        ([fullName] 
        ,[date] 
        ,[limitOrder] 
        ,[quantity] 
        ,[tickerSymbol] 
        ,[limitPrice] 
        ,[contingentOrder] 
        ,[contingentQuantity] 
        ,[contingentLimitPrice]) 
      VALUES 
        (<$fullName, varchar(50),> 
        ,<$date, datetime,> 
        ,<$limitOrder, varchar(50),> 
        ,<$quantity, int,> 
        ,<$ticSymbol, varchar(50),> 
        ,<$limitPrice, float,> 
        ,<$contingentOrder, varchar(50),> 
        ,<$contingentQuantity, int,> 
        ,<$contingentLimitPrice, float,>)"; 
+0

我按照你所说的做了,并且它以'Undefined属性返回:DateTime :: $ format在C:\ xampp \ htdocs \ fusion \ insertTrade.php on line
' – Andrew

+0

它不是属性,它是[方法](http://php.net/manual/en/datetime.format.php)。你确定你正确地使用它吗? – D4V1D

+0

我对该帖子进行了编辑,以反映我的做法 – Andrew

相关问题