【发布时间】:2016-01-21 18:20:36
【问题描述】:
我正在使用 ADODB 连接我的 php 代码和我的 FoxPro .dbf 表。这是连接字符串和我用来更新表的 RecordSet 的打开
$this->dbConnection->Open('Provider=VFPOLEDB.1;CursorType=2;Data Source="{path}";');
$this->recordSet->Open($sqlStr, $this->dbConnection, 3);
打开记录集并选择一些记录后,我需要更新记录集中的值,然后将这些更改保存回表中,但我无法确定使用 Ado 记录集“更新”时要使用的格式/类型方法。出于多种原因,我不想使用 sql UPDATE 语句 - 在这种情况下是为了利用批量更新。
当 FoxPro 字段数据类型为 DateTime/Date/Time 时不起作用的行是:
$this->recordSet->Update('fieldName', $value);
我已经尝试过使用 'value' 变量等于:
"{//::}" or 'CTOT("{//::}")'
这些都不起作用。我只是收到错误“多步操作产生错误。检查每个状态值。”在:
com->Update('tcdate', '{//::}')
关于如何在 php 中格式化 DateTime/Date 值以便 Ado 连接接受它的任何想法?谢谢!
更新
经过进一步测试,这似乎只是空白/空日期值的问题。使用 update 方法时,只要值不包含花括号,就像在实际 SQL 语句中需要的那样,它就可以正常工作。即这有效:
$this->recordSet->Update('dateField', '2016-01-21 02:10:48 PM');
此外,要添加新记录,必须指定所有字段的值,因此据我所知,不可能通过 AddNew 添加具有空白日期值的新记录。如果该记录中还有日期类型字段,则以下失败。
【问题讨论】:
标签: php datetime ado visual-foxpro foxpro