【问题标题】:PDO with INSERT INTO带有 INSERT INTO 的 PDO
【发布时间】:2019-09-27 09:01:26
【问题描述】:

我想插入 MSSQL (miscorosft) 数据库,但我只能选择使用 PHP(这将是一个很长的故事),所以我正在尝试 PDO。

选择查询没问题,但我在插入时卡住了,因为插入数据的另一个系统使用像这样的插入 ... VALUES ( CAST(N'2019-04-16 20:20:31.000' AS DateTime), N'4057415', N'False' ... 我不确定,我可以如何以及在哪里(如果可能的话)使用N' 和 CAST:

$data = $conn->prepare('INSERT INTO table1 (Date, Number, State) VALUES (?, ?,  ?)');
$data->execute(['2019-04-16 20:20:31.000', '4057415', 'False']);

【问题讨论】:

  • 您可以尝试使用'2019-04-16T20:20:31.000' 作为日期时间值吗?谢谢。
  • 你的意思是没有那个 CAST 和 N' ?就像我有 ´´´ $data->execute(['2019-04-16 20:20:31.000', '4057415', 'False']); ''' ?
  • 你应该可以这样做:INSERT INTO table1 (Date, Number, State) VALUES (CAST(? AS DateTime), ?, ?)
  • @TomParis 以T 作为分隔符 - $data->execute(['2019-04-16T20:20:31.000', '4057415', 'False']);
  • 你得到什么错误?

标签: php pdo casting insert nvarchar


【解决方案1】:

尝试以2019-05-28 12:52:16 格式插入Date 值 - 您可以查看使用 PHP date ("Y-m-d H:i:s") 的示例

当您尝试插入一行时,您看到了什么错误?

【讨论】:

  • 我还没试过。我只是不确定是否必须有CAST AS DateTimeN' - 我刚刚从数据库导出中看到,插入就像我提到的那样,我只是担心没有它就发送它。
  • 您通常不需要强制转换一个值 - PHP/MySQL 足够聪明地解决它,并且在它不能解决的情况下,您可以在绑定参数时显式定义类型。在 MySQL 插入语句中强制转换值不是理想的方法。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 2012-08-22
相关资源
最近更新 更多