Некоторое время назад я искал то же решение и зашел в тупик. Я хотел решение, которое работает с PHP, хотя.
Некоторые из них, которые я попробовал, были
1. Драйверы Xbase : они хорошо работали для простых DBF, но тогда они не поддерживают более новые типы данных, такие как поля DateTime, поэтому этот параметр был исключен.
2. Драйвер ODBC для VFP : Это хорошо работает, если вы работаете с более старой версией VFP, так как разработка этой версии остановлена, и она не поддерживает более новые поля автоинкремента.
и вы продолжаете получать странные ошибки, такие как «Не стол», который сводит вас с ума.
«Драйвер VFP ODBC не поддерживает таблицы с полями автоинкремента»
3. Коммерческие инструменты : Есть много других коммерческих вариантов, которые, очевидно, не будут работать для меня
4. Бесплатные инструменты (DBF в CSV) , которые преобразуют DBF в CSV или аналогичный файл, но тогда это будет работать, если вы делаете только выбор. Вы не можете делать какие-либо обновления.
Последний вариант, который наконец-то сработал для меня, был:
Visual Foxpro OLE Driver.
Вы можете установить драйвер OLE с здесь .
Пример кода выглядит как
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\testDB.dbc";');
$query = "SELECT * FROM TABLE1 ";
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg());
while (!$rs->EOF) {
echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n";
$rs->MoveNext();
}
$query = "UPDATE TABLE1 set COL1 = \"AA\", COL2 = \"Updated value\" ";
$conn->Execute($query);
Я не нашел никакой документации по php, но вы могли бы обратиться к MSDN ADO API
и используйте аналогичный API, особенно если вы хотите выполнять операции на основе транзакций.
$conn->BeginTrans();
..
..
$conn->CommitTrans();
or
$conn->RollbackTrans();