我试图执行插入查询到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
插入'$日期 - >格式( 'YMD H:I:S')'(返回一个字符串),而不是将只是'$ date'(这是一个'Datetime'对象)。 – D4V1D
获取PHP发送给SQL服务器的实际字符串,并尝试手动运行它。有一个可能格式错误的日期时间列。 – Paolo
[DateTime类的对象无法转换为字符串]的可能重复(http://stackoverflow.com/questions/10209941/object-of-class-datetime-could-not-be-converted-to-string) – D4V1D