我使用ADODB來連接我的php代碼和我的FoxPro .dbf表。這裏是連接字符串和我使用更新表ADODB更新方法更新FoxPro日期/日期時間字段
$this->dbConnection->Open('Provider=VFPOLEDB.1;CursorType=2;Data Source="{path}";');
$this->recordSet->Open($sqlStr, $this->dbConnection, 3);
打開記錄,並選擇一些記錄後Recordset的開放,我需要RecordSet中更新的值,然後保存這些更改回到表中,但我無法弄清楚在使用Ado的Recordset'Update'方法時要使用的格式/類型。我不想使用sql UPDATE語句有很多原因 - 在這種情況下可以利用批量更新。
每當FoxPro的字段數據類型爲日期時間/日期/時間不工作的一行是這樣的:
$this->recordSet->Update('fieldName', $value);
我與「價值」變量等於試了一下:
"{//::}" or 'CTOT("{//::}")'
而這些工作都沒有。我剛剛收到錯誤「多步驟操作產生的錯誤,檢查每個狀態值。」在:
com->Update('tcdate', '{//::}')
有關如何在php中設置DateTime/Date值的格式,以便Ado連接接受它的任何想法?謝謝!
UPDATE
進一步的測試之後,這似乎只是空白/空的日期值的問題。在使用update方法時,只要該值不包括它在實際SQL語句中需要的花括號,它就可以正常工作。即這個工程:
$this->recordSet->Update('dateField', '2016-01-21 02:10:48 PM');
此外,添加一個新的記錄,所有字段的值必須指定,因此無法就增加一個新的記錄通過的AddNew空白日期值,因爲我可以告訴。如果該記錄中還存在Date類型字段,則以下操作將失敗。
感謝您的洞察力。我一定會看看SET NULL OFF。儘管它「有效」,但我不喜歡我提出的解決方案。這是hacky的方式..我只是尋找一種方法來做到這一點,而不使用真正的空值,因爲這會影響很多其他地方。 –