【发布时间】:2015-08-28 03:24:25
【问题描述】:
我正在尝试向 sql 服务器执行插入查询。但是,每次我执行查询时,它都会返回
可捕获的致命错误:不能是 DateTime 类的对象 在 C:\xampp\htdocs\fusion\insertTrade.php 中转换为字符串 上线 29
我不明白发生了什么,因为在那一行我什至没有对日期时间做任何事情。有人可以帮忙吗?
插入交易.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);
现在说
未定义的属性:C:\xampp\htdocs\fusion\insertTrade.php 中的 DateTime::$format 第 29 行
【问题讨论】:
-
插入
$date->format('Y-m-d H:i:s')(返回一个字符串)而不是只插入$date(这是一个Datetime对象)。 -
获取 PHP 发送到 SQL Server 的实际字符串并尝试手动运行它。有一个日期时间列可能格式错误。
标签: php sql sql-server datetime