Я использую php для обновления некоторых таблиц в VFP 9.0 с использованием ADO COM.Visual foxpro Обновление DBF с использованием php
Я могу выбрать и обновить DBF до тех пор, пока не укажу Где.
Момент, когда я добавляю предложение where к запросу, он просто возвращает или обновляет 0 строк.
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\testDB.dbc";');
$query = "UPDATE TABLE1 set COL1 = \"AA\", COL2 = \"Updated value\" ";
$conn->Execute($query);
$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();
}
Результат:
Got COL1: AA :: COL2: Updated value id: 0
Got COL1: AA :: COL2: Updated value id: 1
Got COL1: AA :: COL2: Updated value id: 2
Код 2: С ИНЕКЕ
$query = "UPDATE TABLE1 set COL1 = \"BB\", COL2 = \"NEW2\" WHERE ID = 1";
$conn->Execute($query);
$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();
}
Результат:
Got COL1: AA :: COL2: Updated value id: 0
Got COL1: AA :: COL2: Updated value id: 1
Got COL1: AA :: COL2: Updated value id: 2
Колонка ID является ключом в таблице выше.
Я относительно новичок в VFP. Я не уверен, что это параметр Visual Foxpro или что-то еще, что предотвращает обновления или выбирает, если сделано выборочно.
Не проблема с кавычками как таковая, так как запрос без предложения WHERE работает нормально. Но спасибо в любом случае. Кто-то предложил мне использовать Cast в качестве обходного пути [ , где cast (ID as I) = 1] , и это, похоже, отлично работает для меня. – mtanish