我使用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:與where子句
$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爲I)= 1] 並且對我來說這似乎工作正常。 – mtanish 2010-06-14 19:57:48