【问题标题】:PDO bindValue isn't inserting a datePDO bindValue 没有插入日期
【发布时间】:2020-01-30 08:29:42
【问题描述】:

为了工作,我必须让一个oracle数据库和mysql一个通信。

在 Oracle 上,我有一个 vrp 表,其中包含(除其他外)一个 DATECREATION 列,采用 DATE 格式(唉,这是 SQL 开发人员在我单击它时告诉我的)。它将日期存储在 DD/MON 中。 /YY 格式。

我必须将这些值复制到 mysql 数据库中。起初,我试图忽略它们并将它们用作字符串;但我将不得不操纵它们,所以我需要将它们作为日期。

所以在 PHP 中,我使用 date('Y-m-d', strtotime($row[26])),它工作正常,将 '24-OCT-19' 变成 2019-10-24

然后我尝试将其插入我的 Mysql 数据库,执行以下操作:

$stmt = $conn->prepare("INSERT INTO [...] VALUES (?, ? [...]);
$stmt->bindValue(27, date('Y-m-d', strtotime($row[26]))); (yes there are a lot of columns)
$stmt->execute($row);

如果我回显它看起来不错的数据,我没有混淆我的索引,因为相邻列没有插入日期。但是,第 27 列会收到 0000-00-00

没有出现错误或警告,所以我什至不知道如何调试。

谢谢。

【问题讨论】:

  • 你为什么不像 TO_CHAR( SYSDATE, 'YYYY-MM-DD HH24:MI:SS' ) 那样指示 oracle 将日期更正一起?我也在徘徊,当您发送插入查询时 mysql 会收到什么,但为此您必须激活 mysql 中的日志记录
  • 我没有精确,但我对 oracle 数据库没有任何权利。我只能从中选择数据。对于日志记录,我现在正在研究它
  • 这只会在文本输出中生成一个日期列,因此它不应干扰您被授予的权利。
  • aaaaah 你的意思是当我从中选择数据时
  • 好吧,您的解决方案解决了它。选择不同的方式更容易,因此可能是最好的解决方案,谢谢。如果您将其写为答案,我将验证 ti

标签: php mysql pdo


【解决方案1】:

重写你的 oracle 选择语句。

并使用下面的文本转换,得到一个mysql日期格式的字符串

TO_CHAR( SYSDATE, 'YYYY-MM-DD HH24:MI:SS' )

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 2015-04-29
    • 2016-09-11
    • 1970-01-01
    • 2013-11-12
    • 2011-04-13
    • 2014-07-28
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多